zoukankan      html  css  js  c++  java
  • 表格实现同比环比计算

    如下图:如何在一个表格中实现同比环比计算

     
    当然可以选择通过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、设计完成后进行预览和保存

  • 相关阅读:
    【模拟7.27】单(liu_runda学长的神题)
    【模拟7.27】题(liu_runda的神题)(卡特兰数,组合数)
    7.27考试总结
    7.25考后总结
    《c程序设计语言》读书笔记-递归实现快速排序算法
    《c程序设计语言》读书笔记-4.2-扩充atof函数
    《c程序设计语言》读书笔记-4.1-判断字符串在另一个字符串中的位置
    《c程序设计语言》读书笔记-3.6-数字转字符串最小宽度限制
    《c程序设计语言》读书笔记-3.5-按要求进制位数字转字符串
    《c程序设计语言》读书笔记-3.4-数字转字符串
  • 原文地址:https://www.cnblogs.com/edoo/p/13919430.html
Copyright © 2011-2022 走看看