累计上一年的数据

时间:2015-06-11 13:47:08

标签: sql sql-server

我找不到以下SQL查询的解决方案。我的第一个查询应该并且可以累积去年的数据量。

CASE
WHEN rehuv.VER_DATUM >= dateadd(year, -1, dateadd(month, -datepart(month, @STARTDATE) + 1, @STARTDATE))
                                 AND rehuv.VER_DATUM <= DATEADD(year, -1, @ENDDATE) THEN rehuv.BELOPP ELSE 0 
END AS PREVIOUS_YEAR_ACC

但是当我尝试在特定时间间隔内累积数据时(我想要与@startdate相同的时间间隔 - &gt; @enddate但是向后一年)。 SQL查询:

CASE
WHEN rehuv.VER_DATUM >= DATEADD(year, -1, @STARTDATE)
                                 AND rehuv.VER_DATUM <= DATEADD(year, -1, @ENDDATE) THEN rehuv.BELOPP ELSE 0 
END AS PREVIOUS_YEAR_MONTH

提前谢谢!

祝你好运, 西蒙

1 个答案:

答案 0 :(得分:0)

如果你想要去年的每月总和,你可以试试这个:

DECLARE @STARTDATE DATETIME;
DECLARE @ENDDATE DATETIME;
SET @STARTDATE='2015-1-1';
SET @ENDDATE='2015-5-1';
DECLARE @LAST_YEAR DATE;
SET @LAST_YEAR = DATEADD(YEAR, -1, DATEADD(DAY, 
    DATEPART(DAYOFYEAR, GETDATE())*-1+1, CONVERT(DATE, GETDATE())));

SELECT DATEADD(MONTH, DATEPART(MONTH, VER_DATUM), @LAST_YEAR) MONTH,   SUM(CASE
WHEN REHUV.VER_DATUM >= DATEADD(YEAR, -1, @STARTDATE)
AND REHUV.VER_DATUM <= DATEADD(YEAR, -1, @ENDDATE) 
THEN REHUV.BELOPP ELSE 0 
END ) AS PREVIOUS_YEAR_MONTH
FROM REHUV
GROUP BY DATEPART(MONTH, VER_DATUM)