Sql 按月差异计算-SSI
我需要做一个计算,从“a”列得到的和值除以“B”列的和值,与值相差1个月 例如:Sql 按月差异计算-SSI,sql,sql-server,tsql,ssis,Sql,Sql Server,Tsql,Ssis,我需要做一个计算,从“a”列得到的和值除以“B”列的和值,与值相差1个月 例如: Date A B 2015-02-31 796.92 885.47 2015-02-31 932.2900 932.29 2015-02-31 803.29 1147.56 2015-02-31 839.18
Date A B
2015-02-31 796.92 885.47
2015-02-31 932.2900 932.29
2015-02-31 803.29 1147.56
2015-02-31 839.1800 839.18
2015-02-31 139.20 143.50
2015-02-31 299.64 308.91
2015-02-31 125.47 129.35
2015-02-31 117.98 393.27
2015-02-31 0.00 747.68
2015-01-31 735.29 758.03
2015-01-31 0.00 683.24
2015-01-31 0.00 734.25
2015-01-31 323.64 333.65
2015-01-31 442.36 456.04
2015-03-31 52.84 54.47
2015-03-31 0.00 549.96
2015-03-31 462.24 476.54
所以我需要用B中的值除以一个月前A的值
A B
2015-02-31 442.36 456.04
2015-03-31 52.84 54.47
在这种情况下,上述数值为54.47/442.36
因此,我需要使用SQL中的一个表来实现这一点,以便在仪表板中显示结果
有人能帮我吗
谢谢 您可以尝试使用sql server中的窗口函数吗 您需要
lag()
函数:
select date, a, b,
b / coalesce(lag(a) over (order by date), 0) as Result
from(select date, sum(A) as a, sum(B) as b
from table
group by date
) t;
但是,这假设date
列在单月内没有o/p中所述的任何一天,如果是,则使用datepart()
或month()
函数并相应地调整子查询