Birt 中实现组内跨行计算
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,来源:https://forums.opentext.com/forums/discussion/61542/compare-current-row-with-previous-row-value#l
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
辽宁推广软件开发是做什么的
云龙区网络安全周知识竞赛
缺少管理员的服务器
家有小店服务器
网络安全四年级简单手抄报字少
高级数据库难吗
软件开发保密风险评估报告
数据库查询完关闭连接吗
1.7.2服务器核心
关系数据库要点
台服DNF数据库root用户
初中校园网络安全应急预案
永州软件开发大专学校
网络技术管理体系
石家庄哪家软件开发好
江苏网络安全法
青海诚信积分管理软件开发软件
陕西互联网科技有限公司名单
绝地大逃服务器
网吧主机怎么打开服务器
要认证的wifi网络安全么
美食通数据库不能用
彩票系统彩票软件开发
重庆小金牛网络技术有限公司
国际互联网生活科技博览会
l2tp服务器管理
高校网络技术的应用
服务器多了如何管理员
单位挂网游会被服务器发现吗
网络安全法条文解读