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