对分组后的各组前几名做合并

本文详细介绍了如何在JasperReport中根据用户设定的限制,按性别分组并打印每组年龄最小的前N条记录,包括使用SPL脚本和JDBC连接处理数据。适合数据分组和筛选的报表需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【问题】
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()
5return A4

A2:对表数据做分组

A3:取组内 AGE 的前 N 条最大记录

A4:合并各组

A5:将 A4 结果集返回 jasper

Jasper 可以通过 JDBC 连接集算器,调用脚本方法很简单,可参考Java 如何调用 SPL 脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值