表格类报表的尾部,往往需要显示总行数和合计数之类的信息,这种汇总性质的数据可以用表格的表尾行来实现。
(一)总行数
Wyn Enterprise的表格报表元素,在为明细数据行单元格绑定数据集字段的时候,会自动设置表尾行单元格的表达式,如下图:
其中,第一列尾行的汇总计算是Count,原因是【订单编号】字段的类型是字符型;第二列尾行的汇总计算是Sum,原因是【购买数量】字段是数值型的。
凡是数值型的字段,表尾行的表达式都是 =Sum([字段名]) ;非数值型则是 =Count([字段名]) 。
Count函数是通过对非数值型字段进行计数,结果就是记录总行数,如下图:
事实上,表格头的单元格也可以用Count函数来展示总行数,只是表格头一般都是用于显示列名,所以Wyn会自动填写字段名称,而不是Count表达式。
(二)分组行数
前面的例子是对整个表格的行数进行统计。如果表格设置了行分组,比如根据销售区域统计订单数,怎么统计每个区域的订单数呢?
与总行数类似,这种按分组统计行数的方法是:在分组头或者分组尾行使用Count函数。
下面是一个具体的操作步骤示例。
(1)添加行分组
添加行分组,可以在明细数据行中点击鼠标右键,再点击【分组操作】-【插入分组】,如下图:
再设置【分组条件】字段,如下图:
更简单的方法是,将数据集的分组条件字段直接拖放到表格分组框内,如下图:
(2)在分组尾行单元格设置Count表达式
在分组尾的单元格中,输入 =Count([字段名]) 表达式,如下图:
预览时,可以看到,尽管表达式都是 =Count([字段名]) ,但是分组尾和表尾行显示的数字却是不同的,如下图:
也就是说,Wyn会自动根据表达式所在的位置(内部称为数据区域,Data Region)来决定计数的范围。分组尾上的表达式,就针对分组内的数据行进行计数;表尾行的表达式,则是对整个数据集进行计数。
(三)跨数据区域的汇总表达式
前面介绍的Count函数在不同数据区域(分组头尾,表尾行)的不同结果。如果需要在一个区域内显示另一个区域的汇总结果,比如在分组内显示总订单数,那应该怎么办呢?
实际上,Count,Sum等汇总函数,除了字段名称这个参数之外,还有另一个被称为“作用域”的参数,也就是说,完整的表达式是下面这样的:
=Count([字段名],"作用域名")
=Sum([字段名],"作用域名")
所谓作用域,是指函数计算所针对的数据范围。
作用域名,可以是数据集名称,也可以是一个分组的名称。
设置好分组的表格如下图:
其中的“表格1_销售大区1”就是分组名称。
为说明作用域参数的效果,我们在明细数据行单元格中分别输入下面的表达式:
=Count(Fields!订单编号.Value, "表格1_销售大区1")
=Count(Fields!订单编号.Value, "销售明细_报表")
如下图:
其中:
表格1_销售大区1 是分组名;销售明细_报表 是数据集名称。
预览效果如下图:
与Count函数类似,Sum,Avg,Max等函数都支持这种作用域参数,可以针对不同范围统计合计值、平均值、最大值。