归并分组- 不规则分组-报表设计高级教程
目录

归并分组

一、报表实例

如果把第一节的报表做些变化,变成下面的报表,该如何做呢?

 

该报表和第一节的报表很类似,所不同的是分组规则发生了变化,把“东北”组和“华北”组合并成了一组,组名改成“北方地区”;把“华南”组和“西南”组合并成一组,组名改成“南部地区”;把“华东”组和“西北”组合并成了一组,组名改为“其它”。
这种人为地把某几组合并成一组,且合并规则并无规律,需要逐组枚举的报表,我们称为归并分组的报表。
下面我们看看该报表如何设计:

二、设计过程

1、引用数据集demo_订单明细表

2、编辑报表


    (1)A3单元格表达式:=demo_订单明细表.enumGroup(true,地区=='东北' or 地区=='华北',"北方地区",地区=='华南' or 地区=='西南',"南部地区","其它")

(2)B3单元格表达式:=demo_订单明细表.group(城市,false)

(3)C3单元格表达式:=demo_订单明细表.sum(数量*单价),显示格式:¥#,##0.00

3、 保存预览

此报表保存为“地区销售统计表3”,预览结果如下:

 

三、小结 

归并分组

人为地把某几组合并成一组,且合并规则并无规律,需要逐组枚举的报表,我们称为归并分组的报表。
    从这个报表可以看出,核心部分在A3格,利用enumGroup()函数代替了group()函数,归并分组就是利用enumGroup函数来实现的。
    下面我们看一下该函数的介绍。

enumGroup()

函数说明: 根据表达式的不同计算结果,返回不同的值,然后按这些值进行分组

本函数从左到右计算,先出现的表达式先算,如果出现满足的表达式,则返回相应的结果,后面的不再计算。如果没有一个表达式满足条件,而且有缺省值表达式,则返回缺省值,否则返回null。

语法: datasetName.enumGroup({hasNullGroup{,termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}}}})

参数说明:

hasNullGroup 布尔表达式,true返回空组,false不返回空组

termExp(n) 条件表达式

resultExp(n) 返回结果表达式

defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回本表达式的计算结果

示例:

例:ds1.enumGroup(true,类别ID==1 or 类别ID==3,"副食品",类别ID==6,"肉类","其他") 表示,将数据集ds1中,满足“类别ID==1”或者“类别ID==3”的记录归到“副食品”组中,满足“类别ID==6”的记录归到“肉类”组中,其余的记录归到“其他”组中。