I have a table in MS Access that looks something like this
Date Item Count ----------------------------------------------------------- 1/1/2000 ABC 5 1/1/2000 DEF 8 1/1/2000 GHI 3 1/2/2000 JKL 1 1/2/2000 ABC 7 1/3/2000 GHI 8 1/3/2000 ABC 4
And I want to count for every item in every month, what’s the sum of the past 3/6/12 months and it should look something like this
Date Item Count (3M)
--------------------------------------------------------------------
1/1/2000 ABC 5
1/1/2000 DEF 8
1/1/2000 GHI 3
1/2/2000 JKL 1
1/2/2000 ABC 12 (5+7)
1/3/2000 GHI 11 (3+8)
1/3/2000 ABC 16 (5+7+4)
Is there anyway this can be done in SQL queries?
Advertisement
Answer
Try a self-join on Item and t2.Date <= t1.Date and t2.Date >= dateadd("m",-3,t1.Date).
SELECT
t1.Date,
t1.Item,
SUM(t2.Count) three_sum
FROM
Table1 t1
JOIN Table1 t2
ON t1.Item = t2.Item
AND t2.Date <= t1.Date
AND t2.Date >= dateadd("m",-3,t1.Date)
GROUP BY t1.Date, t1.Item
ORDER BY t1.Date ASC