多数据集的交叉报表
报表样例
通过本示例,可以了解当交叉报表中的数据来自多个数据集时,如何进行数据集的关联设置,以及sum数据集函数的条件表达式的作用。
制作如下图所示的交叉报表:
报表特点:
- 交叉报表中的数据来自三个数据集
- 报表行表头的数据是从一个数据集中取字段“地区”进行分组
- 报表列表头的数据是从另一个数据集中取字段“产品名称”进行分组
- 报表交叉单元格的数据又是对第三个数据集中的字段“销售金额”进行sum求和,但是汇总统计值要与行、列表头的“地区”和“产品名称”的值相关联
报表中的第一个数据集ds1是从数据表“演示_客户表”取“客户名称”、“地区”两个字段的数据,数据集sql如下:
报表中的第二个数据集ds2是从数据表“演示_产品表”取“产品名称”、“产品类别”两个字段的数据,数据集sql如下:
报表中的第一个数据集ds3是从数据表“演示_销售表”取“订单ID”、“地区”、“产品名称”、“销售金额”两个字段的数据,数据集sql如下:
制作方法
选中A2单元格,使用制表助手的“插入交叉表”实现这张多数据集的交叉统计报表:
当拖入了多个数据集的字段时,制表助手会自动进行判断并显示出需要进行数据集关联条件设置,因此按照数据集之间的字段关联关系进行设置即可,如下图:
使用制表助手后,将自动在相应单元格中生成表达式,其中B3单元格的表达式为:
接着可以进一步绘制好报表标题、表头样式等报表格式,即可完成此示例报表的制作:
详细了解制表助手的使用,请参考:单元格制表助手
功能点说明
多源与关联
多源是指一个报表的数据来源有多个。这里的“多个”不只是两个三个,有时甚至是七八个乃至十几个。例如本示例中的交叉报表,数据来自分别从不同的数据表取数的三个数据集。
多源往往带来报表数据的关联。关联是指报表不同区域的数据存在着关联,并且不同区域之间的数据需要进行统计运算。例如本示例中的交叉报表,行、列表头两个扩展区域的数据,需要与交叉单元格扩展区域的数据进行关联运算,才能正确计算出某个地区下某个产品的销售额。因此,在使用制表助手时我们需要进行关联条件设置。如果不进行正确的关联条件设置,那么报表中交叉单元格扩展区域的统计值就不正确,读者可以自行进行一下试验。
详细了解多源与关联,请参考:扩展与关联。
Sum()
使用制表助手在B3单元格自动生成的表达式为:=ds3.Sum(销售金额,ds2.产品名称==ds3.产品名称&&ds1.地区==ds3.地区)
它的结果是在数据集ds3中找出产品名称与数据集ds2的产品名称相等并且地区与数据集ds1的地区相等的全部记录,然后求出这些记录的销售金额汇总值。
表达式中的数据过滤条件表达式“ds2.产品名称==ds3.产品名称&&ds1.地区==ds3.地区”实际就是根据制表助手中设置的数据集字段关联条件而自动生成的。因此,这里实际上就是利用了Sum()函数可以设置条件表达式来实现多个数据集之间的数据关联运算。
对于B3单元格,它会随着它的左主格A3和上主格B2同时进行向下和向右的交叉扩展。因此B3单元格表达式中的“ds1.地区”取出的是一个值,并且是与A3单元格向下扩展出来格子中对应相等的地区值,通过“ds1.地区==ds3.地区”就实现了B3单元格中ds3数据集与A3单元格数据的关联。同理,B3单元格表达式中的“ds2.产品名称”取出的是一个值,并且是与B2单元格向右扩展出来格子中对应相等的产品名称值,通过“ds2.产品名称==ds3.产品名称”就实现了B3单元格中ds3数据集与B2单元格数据的关联。最终,两个关联表达式合并在一起“ds2.产品名称==ds3.产品名称&&ds1.地区==ds3.地区”,就实现了这张多数据集的交叉报表中的数据关联汇总计算。
详细了解Sum()函数,请参考:Sum()。