重叠分组
一、报表实例
我们把上节的报表继续做变化,如下图所示:
从上图可以看出,“华北”组中的一部分记录被拎出来在“其中:北京”组和“其中:天津”组中进行了重复的统计,便于用户一目了然,既了解总的统计数据,又了解“北京”和“天津”的统计数据。
这种同一部分记录在不同组中被重复统计的分组报表称为重叠分组报表。
下面我们介绍一下快逸报表中如何实现该报表:
二、设计过程
1、引用数据集demo_订单明细表
2、编辑报表
(1)A3单元格表达式:=demo_订单明细表.overlap(true,地区=="华北","华北",城市=="北京"," 其中:北京",城市=="天津"," 其中:天津",地区=="华南","华南",城市=="深圳"," 其中:深圳",地区=="华东","华东","其它")
该单元格是按“华北”、“华南”、“华东”和“其它”分组,其中“华北”地区的“北京”和“天津”、华南地区的“深圳”被拎出来重复显示。
(2)B3单元格表达式:=demo_订单明细表.sum(数量*单价),显示格式:¥#,##0.00
(3)C3单元格表达式:=demo_订单明细表.sum(折扣*数量*单价),显示格式:¥#,##0.00
(4)D3单元格表达式:=B3-C3,显示格式:¥#,##0.00
3、 保存预览
此报表保存为“地区销售统计表4”,预览结果如下:
三、小结
重叠分组
同一部分记录在不同组中被重复统计的分组报表称为重叠分组报表。
重叠分组的关键在于A3格的表达式发生了变化,用overlap()函数代替了enumGroup()函数,重叠分组就是利用overlap()函数来实现的。
下面我们介绍一下overlap函数的用法。
overLap()
函数说明: 对每一条记录依次计算条件表达式,如果满足则把该条记录加入到相应的组里。如果有多个组满足,则这些组中都会含有此条记录。如果都不满足并且有缺省值表达式,则把该条记录加入到缺省组中。组值为以该组的第一条记录计算结果表达式所得到的值。
语法: ds.overlap({hasNullGroup{,termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}}}})
参数说明:
hasNullGroup 布尔表达式,true返回空组,false不返回空组
termExp(n) 条件表达式
resultExp(n) 返回结果表达式
defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果
返回值: 一组数据的集合,数据类型由resultExp1的运算结果决定
示例:
例:ds1.overlap(true,货主地区=="华北","华北",货主城市=="北京"," 其中:北京",货主地区=="华南","华南",货主地区=="华中","华中","其他")
把数据集中满足“货主地区=="华北"”的记录归到"华北"组中,满足“货主城市=="北京"”的记录归到" 其中:北京"组中,满足“货主地区=="华南"”的记录归到"华南"组中,满足“货主地区=="华中"”的记录归到"华中"组中,剩余的记录归到"其他"组中。