Sql 按月差异计算-SSI

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

我需要做一个计算,从“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.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()
函数并相应地调整
子查询