0

DB テーブル - 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

Jasper Report で次の結果を得るにはどうすればよいですか?

                      Student Run Record

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

2 に答える 2

3

crosstabこれは、要素を使用して実現できます。

あなたから提供されたクエリを使用しました。サンプルには次のフィールドがあります。

  • 名前: 文字列
  • メートル: ロング
  • 時間: 長い

crosstabパレットからレポート デザイナーのレポートのサマリー バンドにドラッグ アンド ドロップすると、ウィザードが表示されます。

ウィザードに従います。

  • クエリを保持するデータセットを選択します。
  • グループ化が一意に設定された行として構成し、グループ化も一意に設定された名前を 選択た列として構成します
  • メジャーとしてTimeを使用し、アグリゲータをSumに変更します (学生ごとに 1 つの値しかなく、距離の合計が値と同じになるため、count以外のもの)。

クロス集計が追加されたら、レポート インスペクターをクリックしてクロス集計を展開し、行グループ > メーターをクリックし、プロパティ パネルで as を選択しますTotal Position:None。列グループ > 名前も同様です。

出力は、下の画像に示すようになります。

草案

クエリで下書きしたものに近い出力を取得するには、次のようにします。

  • Report Inspector で Row Groups > Meter を選択し、Properties パネルで Bucket Value Class を に変更しますjava.lang.String。次に、デザイナーで保持するフィールドを編集し、100ではなく100mを出力$V{Meter}するように変更し ます。$V{Meter} + "m"
  • 0を非表示にするには、デザイナでメジャーを保持するフィールドをクリックし、それを から$V{TimeMeasure}に変更し$V{TimeMeasure} == 0 ? null : $V{TimeMeasure}ます。プロパティ パネルで、 プロパティBlank when nullのチェックボックスをオンにします。

完成報告

于 2013-01-21T10:58:14.320 に答える
0

レポート行グループのバケット式を変更します。いくつかのフィールドを連結してバケット式を作成します。例えば:

<bucket class="java.lang.String">
    <bucketExpression><![CDATA[$F{field1}+""+$F{field2}]]></bucketExpression>
</bucket>
于 2014-06-24T06:29:48.960 に答える