2013-01-21 20 views
0

數據庫表 - RunRecord如何重複分組遞交水平(碧玉報告)

Name  Student_ID Meter(m) Time(s) 
ABC  1016   100  13 

ABC  1016   200  26 

ACB  1017   100  15 

BAA  1018   100  18 

BAA  1018   200  22 

BBB  1019   100  14 

CDE  1020   200  22 

CDE  1020   100  14 

我應該怎麼做,這樣我可以得到碧玉報告如下的結果?

     Student Run Record 

        ABC   ACB   BAA  BBB   CDE 
100M    13   15   18   14   14 
200M    26       22      22 

回答

3

您可以通過使用crosstab元素實現這一目標。

我使用的查詢爲您提供的,我有我的樣品在這些領域:

  • 名稱:字符串
  • 儀表:龍
  • 時間:長

拖放將組件面板中的crosstab從報告設計器中拖放到報告的彙總區域,會彈出一個嚮導。

按照嚮導:

  • 選擇保存查詢的數據集。
  • 配置爲行儀表與分組設置爲獨特,作爲列選擇名稱與分組也設置爲獨特
  • 作爲衡量你使用時間,改變聚合器總和(除了計數,因爲你只需要每名學生一個值和距離總和將是相同的值)。

一旦交叉在報告檢查添加點擊展開交叉表,單擊行組>儀表並在屬性面板中選擇作爲Total Position:None。列組>名稱相同。

輸出將如下圖所示。

draft report

爲了讓輸出更接近你在查詢起草什麼:

  • 在報告檢查選擇行組>儀表,在屬性面板中更改分組值類以java.lang.String。然後在設計人員編輯字段,其中包含$V{Meter}並將其更改爲$V{Meter} + "m",以便輸出100m而不是。
  • 爲了隱藏,請在包含該度量的字段中的設計器中單擊並將其從$V{TimeMeasure}更改爲$V{TimeMeasure} == 0 ? null : $V{TimeMeasure}。在屬性面板中選中屬性框爲空

finished report

0

變化報告行組的桶表達。通過連接幾個字段來製作存儲桶表達式。例如:

<bucket class="java.lang.String"> 
    <bucketExpression><![CDATA[$F{field1}+""+$F{field2}]]></bucketExpression> 
</bucket>