我有一个自定义表,其中包含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结束时的情况))
答案 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) )