千家信息网

Birt 中实现组内跨行计算

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,来源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#l
千家信息网最后更新 2026年11月01日Birt 中实现组内跨行计算

来源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#latest

Birt中想要实现组内跨行计算一般要用SQL窗口函数或报表脚本去实现,但代码比较复杂,这种情况下可以用SPL来辅助报表工具。下面以例子来说明。

本例中有三个字段,其中SELLERID是分组字段,DAY是需要进行比较的字段,字段类型为日期时间型。需要设计一张分组表,SELLERID是分组字段,明细字段是DAY, AMOUNT以及计算列SHIFTTIME, SHIFTTIME中存放着DAY和本组上一条记录中的DAY相差几天。源数据如下:

用集算器进行数据整理:


A
1=connect("db").query("select SELLERID, DAY,AMOUNT,0 as SHIFTTIME from SALES order by SELLERID, DAY")查询数据库,对SELLERID, DAY字段排序,多产生一列常数备用
2=A1.group(SELLERID).run(~.run(interval(DAY[-1],DAY):SHIFTTIME))按SELLERID分组,并在每组数据中修改计算列SHIFTTIME
3=A2.union()合并每组数据
4return A3将计算结果返回给报表工具。

将上边SPL代码保存为sales.dfx,然后引入到Birt报表中。Birt调用SPL请参考《BIRT调用SPL脚本》。

第一步:添加集算器JDBC数据源。

第二步:创建数据集,编辑Query Text。

第三步:创建报表,报表设计如下:

第四步:WEB 预览,预览结果如下:



字段 数据 报表 分组 代码 工具 结果 脚本 设计 复杂 明细 三个 上边 例子 函数 常数 情况 数据库 数据源 日期 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技 互联网是第几次科技革命的成果 互联网科技工作委员会 深圳恒合互联网络科技有限公司 互联网金融科技委员会 广西拼得多互联网科技有限公司 互联网之后的科技是什么 福州新华互联网科技学校 知乎 以后互联网后是啥科技 互联网系的金融科技公司 贵州叶脉互联网科技有限公司所属行业 语蝶互联网科技有限公司 互联网行业科技股 互联网金融科技公司的优势 深圳互联网科技的发展 互联网科技实习生岗位 广州燕处互联网科技有限公司 新氧科技和美国互联网有关系吗 广州梦谷互联网科技有限公司领导 杭州科技互联网公司有哪些 互联网高科技 互联网科技深圳 互联网科技资迅 互联网科技社 善班互联网科技 齐家互联网科技有限公司 科技大学互联网专业好不好 成都铂石互联网科技做什么的 互联网科技和法律行业 万物互联网智能科技
0