找回密码
 立即注册

QQ登录

只需一步,快速开始

williamluo

高级会员

94

主题

216

帖子

1028

积分

高级会员

积分
1028

活字格认证

williamluo
高级会员   /  发表于:2020-2-12 16:42  /   查看:2483  /  回复:0
本帖最后由 Eden.Sun 于 2023-1-5 18:55 编辑

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

(一)单层级分类的行号

普通表格中的行号,使用RowNumber()函数很容易实现,但是在交叉分析表(矩表)中,使用RowNumber函数是不行的。
以下面的矩表为例:
image.png942566223.png
设计状态如下图:
image.png631801452.png
如果插入一个【行号】列,在单元格中设置 =RowNumber() 表达式,如下图:
image.png142390746.png
结果是得不到自然数序列的行号的,如下图:
image.png737877197.png
原因是,RowNumber() 函数的返回值实际是数据集记录的序号,但是在矩表生成表格的过程中,由于涉及列分组和同分类字段数据的汇总,每个单元格使用的数据集记录,根本无法确定是第几条记录。
因此,矩表的行号,必须另想办法。
根据需求,每个分类项目(大区)占一行,行号从1起排。实质上相当于,随着交叉表的展示,统计大区出现的个数。显示到第一行时,出现了1个大区,显示到第n行时,就出现了n个大区。
这种统计,可以使用Wyn的RunningValue函数来实现。

RunningValue是一个用于滚动或累计计算的函数,在表达式对话框中,位于【常用函数】的【集合】分类节点下面:
image.png588960265.png
该函数的第一个参数是滚动计算的对象,图中是【销售大区】字段,第二个参数是滚动计算方法,可以是Sum,Count等,图中是CountDistinct,表示要对销售大区进行去重的计数。
这样设置表达式后,矩表如下图:
image.png975739440.png
预览时,就是下图所示的交叉分析表:
image.png392640075.png

(二)多层级分类的行号

上面介绍的是单个分组的行号,如果行分组存在多级,次级分组中的行号怎么办呢?
比如下面这样的交叉分析表:
image.png414000243.png
除了第一级【大区】需要行号之外,【省份】也需要行号。并且,与大区统一流水号不同,省份的序号需要以大区为单位分别流水,就是说,每个大区内的省份都是从1开始排号。
实现此类分组内行号,需要用到带作用域参数的RunningValue函数,即在一个分组内进行滚动计算。具体方法如下:
(1)插入子级分组,分组条件为【销售省份】字段。
(2)插入分组内的列,将序号列的表达式设置为:
=RunningValue(Fields!销售省份.Value, CountDistinct, "矩表1_销售省份1")
如下图:
image.png183388976.png
表达式中的最后一个参数"矩表1_销售省份1"就是这个子级分组的分组名,如下图:
image.png368862914.png

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




0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部