按月差异计算 - SSIS

时间:2018-05-17 18:48:31

标签: 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.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中的表来将结果显示在仪表板中。

有人可以帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您想要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()功能并相应地调整subquery

答案 1 :(得分:0)

可以尝试使用sql server中的Window函数 https://www.sqlshack.com/use-window-functions-sql-server/