如下图:如何在一个表格中实现同比环比计算
当然可以选择通过SQL语法直接得到同比和环比数据进行计算,但是SQL的实现比较复杂,可能比较难理解。
本贴主要介绍通过Wyn Enterprise在表格中实现同比环比计算
重点:使用报表的丰富的表达式能力,这块使用的是 LOOKUP 表达式
实现思路,创建两个数据集,一个本期数据,另一个用来作为对比数据,根据同比环比概念获取到同期和环期的数据,然后进行计算相应的同比增长率以及环比增长率
具体实现步骤:
1、创建报表,添加相关数据集(本期数据集和用来对比分析的数据集)。
数据集1:本期数据集,根据类别名称、年、月来进行分组统计得到本期数据。(select sum(购买数量) as 数量,sum(订单金额) as 金额,类别名称,Year(订购日期) as 年,Month(订购日期) as 月 from 销售明细 group by 类别名称,Year(订购日期),Month(订购日期))
数据集2:对比数据集,与数据集1实现完全一致,只不过是用来与本期的数据进行对比,获取到本期数据相应的同期和环期数据
2、添加表格,绑定本期数据,可以根据习惯通过表达式将年月合并为一列显示。
在报表设计器页面添加表格,绑定数据集1的数据,通过表达式将年月合并为一列(本期日期:=Fields!年.Value & "-" & Fields!月.Value)显示。
进行预览:本期的相关数据
注意:重点来了
3、利用LOOKUP表达式通过数据集2的对比数据计算出本期相对应的同期和环期数据。
本例子呢,计算的是两年的本期金额,同期金额,环期金额以及同比增长率和环比增长率。
设计器中添加列,绑定同比日期,同期金额,环比日期,环期金额,同比增长率,环比增长率。
这些列的数据绑定选择为表达式通过LOOKUP函数来计算得到
同比日期:与本期月份相同的上一年日期(=Fields!年.Value-1 & ”-“ & Fields!月.Value)
同期金额:利用LOOKUP计算同期金额(=Lookup(Fields!类别名称.Value & "|" & Fields!年.Value-1 & "|" &Fields!月.Value ,Fields!类别名称.Value & "|" & Fields!年.Value & "|" &Fields!月.Value, Fields!金额.Value, "数据集2"))
环比日期:本期为1月时,环期是上一年12月(=IIF(Fields!月.Value-1>=1,Fields!年.Value & "-" &Fields!月.Value-1,Fields!年.Value-1 & "-" & "12" ))
环期金额:同样本期为1月时,环期是上一年的12月金额(=IIF(Fields!月.Value-1>=1,Lookup(Fields!类别名称.Value & "|" & Fields!年.Value & "|" &Fields!月.Value-1 ,Fields!类别名称.Value & "|" & Fields!年.Value & "|" &Fields!月.Value, Fields!金额.Value, "数据集2"),Lookup(Fields!类别名称.Value & "|" & Fields!年.Value-1 & "|" & "12" ,Fields!类别名称.Value & "|" & Fields!年.Value & "|" &Fields!月.Value, Fields!金额.Value, "数据集2") ))
同比增长率:通过(本期金额-同期金额)/同期金额,可以采用文本框的数据来进行计算 (=(ReportItems!文本框8.Value-ReportItems!文本框23.Value)/ReportItems!文本框23.Value)
环比增长率:通过(本期金额-环期金额)/环期金额,同样采用文本框的数据来进行计算 (=(ReportItems!文本框8.Value-ReportItems!文本框17.Value)/ReportItems!文本框17.Value)
4、设计完成后进行预览和保存