解决 Birt 等开源免费报表工具制作报表的几个难题

本文探讨了使用Birt等开源报表工具在制作报表时遇到的挑战,如组内跨行计算、跨库数据源处理、字段拆分和主表动态插入子表字段。通过集算器SPL脚本,可以有效地解决这些问题,实现复杂的报表运算和数据整合。
摘要由CSDN通过智能技术生成

解决 Birt 等报表工具制作报表的几个难题

解决Birt等报表工具制作报表的几个难题

原文地址:http://c.raqsoft.com.cn/article/1552378480299?r=CGQ

在上一篇《Birt 如何实现不规则月份统计》中,我们讲解了如何帮助 Birt 制作这种报表的详细过程,在本文中我们再继续讨论几个类似的制作难题,并把说明集中在如何编写集算器 SPL 脚本上,不再赘述如何在 Birt 中引入 SPL 的步骤了。

1.        组内跨行计算

组内跨行计算是指在计算一行中某个计算列的值时,需要引用到组内其它行的数据来进行计算。比如下面这个例子:

库表 sample 有三个字段,其中 id 是分组字段。需要设计一张分组表,使用 id 分组,明细字段是 v1,v2 以及计算列 crossline, 其中 crossline 的算法是本条记录 v1、v2 之和加上本组上一条记录的 v1、v2 之和。示例源数据如下:

id v1 v2
1 1 2
1 2 3
2 1 1
2 2 2
3 3 3

最后要展现的报表结果如下图所示:

编写集算器 SPL 代码如下:

  A
1 =connect("demo")
2 =A1.query("select   *, 0 as crossline from sample")
3 >A2.group(id).run(~.run(v1+v2+v1[-1]+v2[-1]:crossline))
4 >A1.close()
5 return   A2

 

A1   连接数据库

A2   查询数据库,同时多产生一列常数备用。

A3   按 id 分组,并在每组数据中修改计算列 crossline,最后合并,其中 v1[-1]、v2[-1] 是集算器特有的定位上一行记录中字段的写法。

A4   关闭数据库

A5   将 A2 中的计算结果数据集返回给报表工具

原文地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值