Birt 中实现组内跨行计算
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,来源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#l
千家信息网最后更新 2025年12月02日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() | 合并每组数据 |
| 4 | return A3 | 将计算结果返回给报表工具。 |
将上边SPL代码保存为sales.dfx,然后引入到Birt报表中。Birt调用SPL请参考《BIRT调用SPL脚本》。
第一步:添加集算器JDBC数据源。
第二步:创建数据集,编辑Query Text。
第三步:创建报表,报表设计如下:

第四步:WEB 预览,预览结果如下:
字段
数据
报表
分组
代码
工具
结果
脚本
设计
复杂
明细
三个
上边
例子
函数
常数
情况
数据库
数据源
日期
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
本地数据库安全
网络安全短片中学生
电力系统网络安全装置离线
柳州定制软件开发
乐享网络技术有限公司深圳
数据库中外码正确的事
西安服务器托管
分类数据库如何打开
计算机网络技术需要考取的证书
新沂辅助软件开发常见问题
魔兽正式服哪个服务器最平衡
下载外文文献的数据库
查看服务器对电脑的查看
住宿行业管理系统服务器错误
奇游 数据库
什么是软件开发模型设计
网吧电影服务器系统
淮安初中网络安全竞赛
数据库er模型设计内容主题
澧县软件开发
中软网络安全技能鉴定中心
日本vpn服务器
松江区常见软件开发成本
微信商城软件开发
共和国网络安全法于哪年开始实行
软件开发师哪里就业率高
如何获得梦幻西游手游服务器
数据库文件 db
邮箱在哪里选择数据库
学校资源数据库下载