表格类报表,从结构形式上划分,一类是固定列的一览表式的报表,另一类是动态列的交叉分析表式的报表。
所谓“动态列”,就是最终展示输出的报表,横向栏目是不确定的,根据实际数据,栏目数(也就是表格的列数)是动态变化的。
以下图为例:
图中,两层表头中的上层是年度,下层是月份。如果实际数据没有12个月的数据,那么就不会显示12个月的列。
与此相对,普通表格,一旦设计好,无论数据怎么变化,表格的列(横向栏目)是不会变化的。
(一)矩表的构成
下图为矩表元素的设计状态:
其中:
A:行分组列头,可以输入静态文字,作为行分组的标题。
B:列分组:绑定数据集的字段之后,这个字段的值就会成为动态列的标题。矩表会自动去重,即为每个非重复的字段值生成一个列。
C:行分组:绑定数据集的字段之后,这个字段的值就会成为行的标题。矩表会自动去重,即为每个非重复的字段值生成一个表格行。
D:数值单元:绑定数据集的字段之后,默认显示这个字段的汇总值。
注意:
(1)数值单元格D的汇总,默认行为是用Sum函数求合计,其实也可以使用Max函数求最大值,或用Avg求平均值等。
(2)汇总不是数据集所有记录的汇总,二是按照列分组和行分组所绑定的字段进行分类汇总的。比如行分组为某个区域、列分组为某个月份,数值字段为销售数量,那么汇总值是当前行对应的区域、在当前列对应的月份、总的销售数量。
(二)子分组与父分组的关系
行分组和列分组都可以有多级,以行分组为例,可在已有分组的单元格内单击鼠标右键,选择【行分组】-【子级分组】,即可插入一个新的分组,如下图:
图中,行分组是【销售大区】和【销售省份】两级分组;列分组是【年】和【月】两级分组。
这种父子分组之间,可以有逻辑关系,比如区域-省份、年-月,逻辑上有包含关系。但是这种关系并没有强制要求,也就是说,子分组可以跟父分组没有业务上的逻辑关系,可以是完全不同的维度,比如父分组是销售大区,子分组可以是支付方式,如下图:
预览结果如下图:
可以看到,报表展示的是父子分组字段值的各种组合。
(三)列的排序
矩表设计中的一个常见问题是动态列的排序,默认情况下,矩表生成动态列的次序,是按照数据集中出现新的字段值的次序来排列的,看起来可能就是随机排列的。如下图:
看起来,月份排列是乱的。解决列的排序问题,需要设置【分组】的【数据排序规则】。如下图:
选中矩表的单元格时,右边的属性设置默认是针对文本框的,必须先切换到【分组】选项卡,然后设置【数据排序规则】。
图中设置的排序规则是:
=Month(Fields!订购日期.Value)
其含义是,按照订购日期字段的月份值来排序。这样设置之后的效果,就是横向的月份列,从1到12顺序排列,如下图: