Jasper reports 如何水平重复分组字段(jasper报告)

Jasper reports 如何水平重复分组字段(jasper报告),jasper-reports,Jasper Reports,数据库表-运行记录 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

数据库表-运行记录

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报告中得到以下结果

                      Student Run Record

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

您可以通过使用交叉表元素来实现这一点

我使用了您提供的查询,我的示例中有以下字段:

  • 名称:String
  • 米:长
  • 时间:长
将调色板中的交叉表拖放到报表设计器中报表的摘要栏中,将弹出一个向导

按照向导操作:

  • 选择保存查询的数据集
  • 配置为行,分组设置为唯一;配置为列,分组也设置为唯一
  • 作为度量,您使用时间,并将聚合器更改为总和(除计数外的任何内容,因为每个学生只有一个值,并且距离总和将与值相同)
添加交叉表后,在报告检查器中单击并展开交叉表,单击行组>米,然后在属性面板中选择as
总位置:无
。列组>名称也一样

输出将如下图所示

为了使输出更接近您在查询中草拟的内容:

  • 在报告检查器中,选择Row Groups>Meter,在属性面板中将Bucket Value类更改为
    java.lang.String
    。然后在设计器中编辑包含
    $V{Meter}
    的字段,并将其更改为
    $V{Meter}+“m”
    以使输出为100m而不是100
  • 要隐藏0,请在设计器中单击保存度量值的字段,并将其从
    $V{TimeMeasure}
    更改为
    $V{TimeMeasure}==0?null:$V{TimeMeasure}
    。在“属性”面板中,选中“属性为空时为空”复选框

您可以通过使用
交叉表
元素来实现这一点

我使用了您提供的查询,我的示例中有以下字段:

  • 名称:String
  • 米:长
  • 时间:长
将调色板中的交叉表拖放到报表设计器中报表的摘要栏中,将弹出一个向导

按照向导操作:

  • 选择保存查询的数据集
  • 配置为行,分组设置为唯一;配置为列,分组也设置为唯一
  • 作为度量,您使用时间,并将聚合器更改为总和(除计数外的任何内容,因为每个学生只有一个值,并且距离总和将与值相同)
添加交叉表后,在报告检查器中单击并展开交叉表,单击行组>米,然后在属性面板中选择as
总位置:无
。列组>名称也一样

输出将如下图所示

为了使输出更接近您在查询中草拟的内容:

  • 在报告检查器中,选择Row Groups>Meter,在属性面板中将Bucket Value类更改为
    java.lang.String
    。然后在设计器中编辑包含
    $V{Meter}
    的字段,并将其更改为
    $V{Meter}+“m”
    以使输出为100m而不是100
  • 要隐藏0,请在设计器中单击保存度量值的字段,并将其从
    $V{TimeMeasure}
    更改为
    $V{TimeMeasure}==0?null:$V{TimeMeasure}
    。在“属性”面板中,选中“属性为空时为空”复选框

更改报表行组的bucket表达式。通过连接几个字段来生成bucket表达式。例如:

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

更改报表行组的bucket表达式。通过连接几个字段来生成bucket表达式。例如:

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