我们通过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实现,但如上所述,我们使用的是域层。
虽然回答你自己的问题似乎是一种奇怪的方法,但我(至少(出于文档目的写这个:
经过研究和反复试验,我们决定在这种情况下不使用域层,因为这似乎根本不可行。一个详细的SQL语句就可以了。
这简化了表,因为计算和分组由数据库完成(从而提高了性能(,因此报表表中不需要更多分组 - 我们可以以普通方式使用详细信息部分,只显示查询的结果。