zoukankan      html  css  js  c++  java
  • 报表-矩表的构成与多级分组

    表格类报表,从结构形式上划分,一类是固定列的一览表式的报表,另一类是动态列的交叉分析表式的报表。
    所谓“动态列”,就是最终展示输出的报表,横向栏目是不确定的,根据实际数据,栏目数(也就是表格的列数)是动态变化的。
    以下图为例:

    图中,两层表头中的上层是年度,下层是月份。如果实际数据没有12个月的数据,那么就不会显示12个月的列。
    与此相对,普通表格,一旦设计好,无论数据怎么变化,表格的列(横向栏目)是不会变化的。

    (一)矩表的构成
    下图为矩表元素的设计状态:

    其中:
    A:行分组列头,可以输入静态文字,作为行分组的标题。
    B:列分组:绑定数据集的字段之后,这个字段的值就会成为动态列的标题。矩表会自动去重,即为每个非重复的字段值生成一个列。
    C:行分组:绑定数据集的字段之后,这个字段的值就会成为行的标题。矩表会自动去重,即为每个非重复的字段值生成一个表格行。
    D:数值单元:绑定数据集的字段之后,默认显示这个字段的汇总值。

    注意:
    (1)数值单元格D的汇总,默认行为是用Sum函数求合计,其实也可以使用Max函数求最大值,或用Avg求平均值等。
    (2)汇总不是数据集所有记录的汇总,二是按照列分组和行分组所绑定的字段进行分类汇总的。比如行分组为某个区域、列分组为某个月份,数值字段为销售数量,那么汇总值是当前行对应的区域、在当前列对应的月份、总的销售数量。

    (二)子分组与父分组的关系
    行分组和列分组都可以有多级,以行分组为例,可在已有分组的单元格内单击鼠标右键,选择【行分组】-【子级分组】,即可插入一个新的分组,如下图:

    图中,行分组是【销售大区】和【销售省份】两级分组;列分组是【年】和【月】两级分组。
    这种父子分组之间,可以有逻辑关系,比如区域-省份、年-月,逻辑上有包含关系。但是这种关系并没有强制要求,也就是说,子分组可以跟父分组没有业务上的逻辑关系,可以是完全不同的维度,比如父分组是销售大区,子分组可以是支付方式,如下图:

    预览结果如下图:

    可以看到,报表展示的是父子分组字段值的各种组合。

    (三)列的排序
    矩表设计中的一个常见问题是动态列的排序,默认情况下,矩表生成动态列的次序,是按照数据集中出现新的字段值的次序来排列的,看起来可能就是随机排列的。如下图:

    看起来,月份排列是乱的。解决列的排序问题,需要设置【分组】的【数据排序规则】。如下图:

    选中矩表的单元格时,右边的属性设置默认是针对文本框的,必须先切换到【分组】选项卡,然后设置【数据排序规则】。
    图中设置的排序规则是:
    =Month(Fields!订购日期.Value)
    其含义是,按照订购日期字段的月份值来排序。这样设置之后的效果,就是横向的月份列,从1到12顺序排列,如下图:

  • 相关阅读:
    关于自定义UICollectionViewLayout的一点个人理解<一>
    自定义进度条
    iOS 无限轮播图的两种实现
    图片的拉伸
    关于plist文件
    加载gif图过渡效果
    关于textView的字数限制
    php-fpm服务启动脚本
    转载:PHP支付宝接口RSA验证
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/edoo/p/13646486.html
Copyright © 2011-2022 走看看