上个月数据公式

时间:2016-09-16 18:48:37

标签: sql sql-server sql-server-2014

我有一个自定义表,其中包含MS SQL 2014中的以下信息。我试图想出一种计算以下公式的方法。

  

ABS(LastMonthTotal + LastMonthNew - ThisMonthTotal)= Decoms

即。 ABS(AugustTotal + AugustNew - SeptemberTotal)。这应该会产生557。

我在考虑在ABS中使用case语句,但无法使其正常工作。

TimeWindow

这是我到目前为止所提出的,但它不起作用。我希望在我完成这部分工作之后,我可以让动态部分在本月和上个月找到工作。

abs((当CreationMonth ='8'然后totalcount结束时的情况)+(当CreationMonth ='8'然后newcount结束时的情况) - (当creationmonth ='9'然后totalcount结束时的情况))

2 个答案:

答案 0 :(得分:1)

使用窗口功能的绝佳机会:

SELECT 
 LAG(TotalCount) OVER (ORDER BY CreationMonth) AS LastMonthTotal 
,LAG(NewCount) OVER (ORDER BY CreationMonth) AS LastMonthNew 
,TotalCount AS ThisMonthTotal
,ABS(LAG(TotalCount) OVER (ORDER BY CreationMonth) 
   + LAG (NewCount) OVER (ORDER BY CreationMonth) 
   - TotalCount) AS Decoms
from TableX;

LAG函数将为您提供上一行的值。 '上一行'由OVER子句中的顺序定义。在这种情况下,您只需通过creationmonth订购。

答案 1 :(得分:0)

类似

ABS(LastMonthTotal + LastMonthNew – LEAD(ThisMonthTotal, 1,0)OVER (ORDER BY  RetreivedON asc)  )