中国式复杂报表:按段分组报表制作对比(润乾 vs 帆软)

概述

报表是用表格、图表等格式来展现数据的工具,不仅格式多样,其中数据更是要体现出动态的效果。其中,分组报表是常见的一种类型,包括按区域、产品类别、客户、年度、季度、月份等不同条件分组。

f1png

上图是一个典型的规则分组情况,另外还有一些不规则的分组情况,典型情况就是按段分组,比如时间段、年龄段等,也就是按照某个值区间完成记录分组。

f2png

上图的例子中我们可以看到,分别统计了 “2012 年圣诞前”、“2012 年圣诞–2013 年国庆”、“2013 年国庆–2014 年五一”、“2014 年五一以后” 四个时间段各地区的订单情况。

目前,常见的报表工具(包括开源、商业报表)都可以轻松制作规则分组报表,但对于不规则的就会吃力了,甚至直接做不了。在国内报表工具中,做的相对较好是润乾和帆软,它们解决此类报表都没什么问题,只是做法上有所不同,接下来我们分别用两款产品介绍这类报表的制作过程,供大家对比参考。

注:例子均采用各产品自带数据库的“订单表”为例,表样如上图。

润乾报表做法

1、准备数据集

       SELECT 订单. 订单 ID, 订单. 订购日期, 订单. 订单金额, 订单. 货主地区 FROM 订单

2、定义报表参数

       按照报表制作的通用性标准,按时间段分组常常是动态区间,因此我们通过定义参

数,给报表动态的分组时间段。

       参数 arg1:参数类型“日期组”,值为“2012-12-25, 2013-10-1, 2014-5-1”;

参数 arg2:参数类型“字符串组”,值为“2012 年圣诞前”、“2012 年圣诞–2013 年国庆”、“2013 年国庆–2014 年五一”、“2014 年五一以后” 。

       说明:arg1 为分段的 3 个时间点,arg2 则为分成的 4 个区间。

3、制作报表

       模板如下:

f3png

       其中:

(1)A3:ds1.group(货主地区:-1)

(2)B1:ds1.plot(订购日期,arg1),润乾封装的不规则分组函数

     B1 的显示值表达式:map(to(0,count(arg1)+1),arg2)

     另外,将 B1 的扩展方式设置为横向扩展

(3)B3:ds1.count()

(4)C3:ds1.sum(订单金额)

4、看效果

预览报表

f4png

** 帆软报表做法       **

1、准备数据集

   SELECT 订单. 订单 ID, 订单. 订购日期, 订单明细. 数量, 订单明细. 数量订单明细. 单价订单明细. 折扣 金额, 客户. 地区 FROM S 订单明细 订单明细,S 订单 订单,S 客户 客户 WHERE  客户. 客户 ID = 订单. 客户 ID  AND  订单. 订单 ID = 订单明细. 订单 ID

2、制作报表

   模板如下

f5png

   A4:ds1.G(地区)

   B2:ds1.G(订购日期)

   B4:ds1. 个数 (订单 ID)

   C4:ds1. 求和 (金额)

3、定义不规则分组列表

   因为没有封装不规则分组函数,所以只能针对性的定义分组列表实现,如下。

   选中 B2 单元格,单元格元素 -- 数据设置,选择“高级”-- “自定义”

f6png

分别定义各分组区间名称及条件表达式,列表如下

(1)2010 年圣诞前

f7png

(2)2010 年圣诞–2011 年国庆

f8png

(3)2011 年国庆–2012 年五一

f9png

(4)2012 年五一以后

f10png

    这一步需要逐个定义,因此略显麻烦,而且不太容易维护,灵活性较差。

4、看效果

f11png

总结:对于国内的商业报表,解决中国式复杂报表是标配的能力。从上面的例子我们不难看出,对于不规则分组的报表需求来说,各厂商也有各自的解决方案,只不过做法不同,略有优劣。对于用户来说,应该根据需求、使用习惯、设计制作能力等方面来选择更适合自己的产品。本例仅作为按段分组报表功能供用户参考对比,欢迎指正。

更多报表工具功能对比相关问题请查看:方案与选型相关问题分类导航
* 中国式复杂报表:不完全分组报表制作对比(润乾 vs 帆软)
* birt 报表与润乾报表对比
* ireport 与润乾报表对比
* Birt 交叉报表,对比润乾
* 润乾报表 V5.0 对比 帆软报表 V8.0