Jaspersoft Studio:按组页脚中的计算值对表进行排序?

时间:2017-07-20 13:18:03

标签: jasper-reports

我们通过JasperReport的域层从数据库中获取事件记录。每条记录都包含用户和时间值:

userid0 | 00:20:10 | 00:15:00
userid2 | 00:12:00 | 00:17:00
userid0 | 00:05:05 | 00:02:30
userid1 | 00:25:00 | 00:50:00

我们的表格应列出每个用户的累计值。每条记录的时间简单地总结在一个变量中。对于上面的示例,结果将是:

userid0 | 00:25:15 | 00:17:30
userid1 | 00:25:00 | 00:50:00
userid2 | 00:12:00 | 00:17:00

此外,还应显示得到的两个时间值的比率(以百分比表示) 通过对用户进行分组来完成计算,结果显示在组页脚中(丢弃“详细信息”);所以在这里我们将有三个组页脚:

userid0 | 00:25:15 | 00:17:30 | 144%
userid1 | 00:25:00 | 00:50:00 |  50%
userid2 | 00:12:00 | 00:17:00 |  71%

如何根据第4列中的“%”值对表格进行排序?该值与数据字段不对应,仅包含在组页脚中。但要求是按照该值对整个表进行排序,例如:从50%上升到144%,并将结果限制为第一行(或最后一行)5行(即用户)。

当然,SQL可以实现所需的结果,但如上所述,我们正在使用域层。

1 个答案:

答案 0 :(得分:0)

虽然回答你自己的问题似乎是一种奇怪的方法,但我正在写这篇文章(至少)用于文档目的:

经过研究和试验&错误我们决定在这种情况下没有域层,因为这似乎根本不可行。精心设计的SQL语句可以解决问题。

这简化了表格,因为计算和分组是由数据库完成的(从而提高了性能),因此在报告表中不再需要分组 - 我们可以使用普通方式的详细信息部分,只显示查询结果。