zoukankan      html  css  js  c++  java
  • 报表-交叉分析表中的行号

    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"就是这个子级分组的分组名,如下图:


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

  • 相关阅读:
    Linux 磁盘管理
    Linux 特殊权限及if语句
    Linux find命令
    MySQL索引知识介绍
    MySQL库表设计小技巧
    教你用SQL实现统计排名
    Truncate用法详解
    utf8字符集下的比较规则
    关于Aborted connection告警日志的分析
    MySQL DDL详情揭露
  • 原文地址:https://www.cnblogs.com/edoo/p/13819640.html
Copyright © 2011-2022 走看看