报表-交叉分析表中的行号

Wyn Enterprise有两种元素可以实现表格类报表:普通表格和矩表。前者用于普通的一览表类的表格,后者用于交叉分析表。本帖介绍矩表中的行号生成方法。

(一)单层级分类的行号

普通表格中的行号,使用RowNumber()函数很容易实现,但是在交叉分析表(矩表)中,使用RowNumber函数是不行的。
以下面的矩表为例:

设计状态如下图:

如果插入一个【行号】列,在单元格中设置 =RowNumber() 表达式,如下图:

结果是得不到自然数序列的行号的,如下图:

原因是,RowNumber() 函数的返回值实际是数据集记录的序号,但是在矩表生成表格的过程中,由于涉及列分组和同分类字段数据的汇总,每个单元格使用的数据集记录,根本无法确定是第几条记录。
因此,矩表的行号,必须另想办法。
根据需求,每个分类项目(大区)占一行,行号从1起排。实质上相当于,随着交叉表的展示,统计大区出现的个数。显示到第一行时,出现了1个大区,显示到第n行时,就出现了n个大区。
这种统计,可以使用Wyn的RunningValue函数来实现。

RunningValue是一个用于滚动或累计计算的函数,在表达式对话框中,位于【常用函数】的【集合】分类节点下面:

该函数的第一个参数是滚动计算的对象,图中是【销售大区】字段,第二个参数是滚动计算方法,可以是Sum,Count等,图中是CountDistinct,表示要对销售大区进行去重的计数。
这样设置表达式后,矩表如下图:

预览时,就是下图所示的交叉分析表:


(二)多层级分类的行号

上面介绍的是单个分组的行号,如果行分组存在多级,次级分组中的行号怎么办呢?
比如下面这样的交叉分析表:

除了第一级【大区】需要行号之外,【省份】也需要行号。并且,与大区统一流水号不同,省份的序号需要以大区为单位分别流水,就是说,每个大区内的省份都是从1开始排号。
实现此类分组内行号,需要用到带作用域参数的RunningValue函数,即在一个分组内进行滚动计算。具体方法如下:
(1)插入子级分组,分组条件为【销售省份】字段。
(2)插入分组内的列,将序号列的表达式设置为:
=RunningValue(Fields!销售省份.Value, CountDistinct, "矩表1_销售省份1")
如下图:

表达式中的最后一个参数"矩表1_销售省份1"就是这个子级分组的分组名,如下图:


此时预览,即可得到预期的分组内序号的效果。

原文地址:https://www.cnblogs.com/edoo/p/13819640.html