【问题】
How to print each group with certain amount of records which the limit was set by end user when using group in ireport subreport?
Table table1:
ID NAME GENDER AGE
3 Nicholas M 17
5 Michael M 20
6 John F 18
6 Aaron M 16
6 Hale F 21
6 Lke F 19
6 Lsmael F 18
6 Brthur M 17
6 Quincy F 20
6 Sam M 18
【回答】
打印各组前 N 条记录,可以在数据源阶段处理,但很多数据库不支持窗口函数,比如 MYSQL。所以可以考虑用集算器辅助 jasper 来实现。代码如下:
| A | |
| 1 | $select * from table1 |
| 2 | =A1.group(GENDER) |
| 3 | =A2.(~.top(-3;AGE)) |
| 4 | =A3.conj() |
| 5 | return A4 |
A2:对表数据做分组
A3:取组内 AGE 的前 N 条最大记录

A4:合并各组

A5:将 A4 结果集返回 jasper
Jasper 可以通过 JDBC 连接集算器,调用脚本方法很简单,可参考Java 如何调用 SPL 脚本。
本文详细介绍了如何在JasperReport中根据用户设定的限制,按性别分组并打印每组年龄最小的前N条记录,包括使用SPL脚本和JDBC连接处理数据。适合数据分组和筛选的报表需求。
686

被折叠的 条评论
为什么被折叠?



