新一代报表工具–报表设计的革命
三、不规则划分
传统报表工具中,很典型的就是数据分组。例如:
省份
城市
显示出来就是:
山东
济南
青岛
山西
太原
大同
相信很多报表的开发者都对这些很熟悉。
这种分组都是完全规则划分的,即划分标准一致且有规则(一般都按某个字段或表达式),所有事实都必须出现且只出现一次,分组值次序与原数据记录次序一致。
与完全划分相对应,在报表汇总中却常常需要不规则划分,即划分标准看不出规律(常常只能穷举),所有事实不一定全部出现在分组结果中、个别事实还可能重复出现,次序也与原数据记录无关。
我们看一个例子: 
这个报表用传统工具实现很困难,青岛的数据是山东的数据的一个子集,虽然报表格式并不复杂,但由于出现了不规则划分,无法直接用报表工具的分组功能完成,只能编程把数据准备成一个单层的二维表数据源,既加大了工作量,又很难体现数据之间的层次关系。(如可将“其中:石家庄”靠右呢,体现数据的层次关系)
在新一代报表工具中,上例的实现就要简单得多:

在润乾报表中,我们可以使用两个数据集ds1和ds2在表格上的关联来完成这张表的定义。通过内建数据集或list函数,将地区按照需要的顺序排列出来。内建数据集编辑界面如下:

为了突出河北和石家庄的从属关系,我们还可以在字段中加入空格来体现。通过定义C5格中的表达式为= ds1.sum(贷款余额,地区=B5) 将C5格的数据和B5的地区进行关联。
再看这张表,使用过Crystal Report的开发者可以想一想如何实现:

这里面涉及了不完全分组(年龄段并未覆盖全部的,你怎么把<20的隐藏起来呢?)
新一代报表工具,则对不规则分组给予了良好的支持,使得很多这类问题能够轻松解决。