I did some googling and research and got this as allowing me to do a group by trailing 60 row sum.
WITH CTE AS (
SELECT
EVENT_DATE
, CUSTOMERID
, COUNT(*) AS NumberOfViews
FROM TABLE
AND EVENT_DATE >= DATEADD(DAY, -360, GETDATE())
GROUP BY EVENT_DATE, CUSTOMERID
)
SELECT
EVENT_DATE
, CUSTOMERID
, SUM(NumberOfViews) OVER (PARTITION BY CUSTOMERID ORDER BY EVENT_DATE ASC ROWS BETWEEN 60 PRECEDING AND CURRENT ROW) AS NumberOfViews60D
FROM CTE
ORDER BY
CUSTOMERID, EVENT_DATE;
Which works fine! However, I want the rolling 60 day sum, not 60 row sum. I got this as an answer but it doesn’t work. What should I do?
WITH CTE AS (
SELECT
EVENT_DATE
, CUSTOMERID
, COUNT(*) AS NumberOfViews
FROM TABLE
AND EVENT_DATE >= DATEADD(DAY, -360, GETDATE())
GROUP BY EVENT_DATE, CUSTOMERID
)
SELECT
EVENT_DATE
, CUSTOMERID
, SUM(NumberOfViews) OVER (PARTITION BY CUSTOMERID ORDER BY EVENT_DATE ASC RANGE BETWEEN INTERVAL '60 DAY' PRECEDING AND CURRENT ROW) AS NumberOfViews60D
FROM CTE
ORDER BY
CUSTOMERID, EVENT_DATE;