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
- 米:长
- 时间:长
- 选择保存查询的数据集李>
- 配置为行,分组设置为唯一;配置为列,分组也设置为唯一李>
- 作为度量,您使用时间,并将聚合器更改为总和(除计数外的任何内容,因为每个学生只有一个值,并且距离总和将与值相同)
总位置:无
。列组>名称也一样
输出将如下图所示
为了使输出更接近您在查询中草拟的内容:
- 在报告检查器中,选择Row Groups>Meter,在属性面板中将Bucket Value类更改为
。然后在设计器中编辑包含java.lang.String
的字段,并将其更改为$V{Meter}
以使输出为100m而不是100$V{Meter}+“m”
- 要隐藏0,请在设计器中单击保存度量值的字段,并将其从
更改为$V{TimeMeasure}
。在“属性”面板中,选中“属性为空时为空”复选框$V{TimeMeasure}==0?null:$V{TimeMeasure}
您可以通过使用
交叉表
元素来实现这一点
我使用了您提供的查询,我的示例中有以下字段:
- 名称:String
- 米:长
- 时间:长
- 选择保存查询的数据集李>
- 配置为行,分组设置为唯一;配置为列,分组也设置为唯一李>
- 作为度量,您使用时间,并将聚合器更改为总和(除计数外的任何内容,因为每个学生只有一个值,并且距离总和将与值相同)
总位置:无
。列组>名称也一样
输出将如下图所示
为了使输出更接近您在查询中草拟的内容:
- 在报告检查器中,选择Row Groups>Meter,在属性面板中将Bucket Value类更改为
。然后在设计器中编辑包含java.lang.String
的字段,并将其更改为$V{Meter}
以使输出为100m而不是100$V{Meter}+“m”
- 要隐藏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>