通过产品 ID 和订单表关联
[类别表]
这是一个中文字典表,通过它将类别 ID 映射成中文名称。
假定数据都来自数据库,可用 SQL 语句取出。
报表特点分析
1、 这是一个典型的多源分片报表,报表可以分成左上、右上、左下、右下四片区域,每片数据来自不同数据表(甚至可能不同数据库),需要实现多个数据集之间的关联。
2、 对字段数据的处理,数据库中存储的是订购日期,报表中需要按照年、月分组统计,需要根据日期解析出年、月,汇总区域是金额,数据库中存储的是单价、数量,需要对字段进行相乘操作。
3、 上表头中的产品类别需要按确定的次序排列,也就是维表 ID 的次序。
4、 左表头的层次不一样,上半两层,下半三层。
下面看下几款工具制作这个报表的过程和工作量。
关于工作量的评估,我们假定使用者均熟悉 SQL 语句且了解相应的报表工具,并只记录实际的制作和正常调试的时间,不包括查阅产品函数资料的时间,也就是一个熟手的完成时间。
润乾报表
制作过程
1、 配置并连接数据源,这个各个工具操作基本都类似,按照向导方式配置就行。
2、 设置数据集
润乾报表支持多数据集,本例的数据存储在四个表内,所以在报表中增加四个数据集,只要分别取四个表的数据(select * from …),可以通过向导操作。
3、 设计报表模板
多源分片报表是一个比较基础的中国式报表,国内报表工具基本都支持,这里看下几个关键单元格的设置:
3.1、 A3 单元格表达式:=ds1.group(year( 订购日期);year(订购日期):1)+“年”,需求中要求按照年月分组,而数据库中存储的是订购日期,所以此处先通过 year 函数取订购日期中的年份。
3.2、 D3 单元格:=ds1.sum( 数量单价 ),报表统计项中的金额是通过单价数量这两个字段生成。
3.3、 E2 单元格按照类别 ID 分组统计,但是要求这个单元格显示中文,单元格有个显示值表达式属性:
中文可以来自单独的一个数据集,这样通过内置的函数就可以将 id 映射成中文。
3.4、 E3 单元格:=ds1.sum(数量 * 单价, 产品 ID in ds4.select( 产品 ID)),多源分片最主要的要将多个数据