我有一张表格,其中包含以下列:
ItemId Date CountUser CountUserPast7Days
1 20120101 20 null
1 20120102 15 null
1 20120208 12 null
2 20120209 65 null
2 20120611 32 null
2 20120615 20 null
3 20120901 45 null
我想编写一个查询来更新CountUserPast7Days,基于 - group通过两个参数的数据 - ItmeId和Date(过去7天)并将列CountUser相加。所以数据应该看起来像 -
ItemId Date CountUser CountUserPast7Days
1 20120101 20 20
1 20120102 15 35
1 20120208 12 27
2 20120209 65 65
2 20120611 32 32
2 20120615 20 52
3 20120901 45 45
答案 0 :(得分:3)
您的示例输出是错误的,因为2012/01/02和2012/02/08之间有一个多月,但我的观点完全相同。您正在寻找的是自我加入:
SELECT S1.Item, S1.Date, SUM(S2.Count) As CountPast7 FROM SlidingHitCount S1
INNER JOIN SlidingHitCount S2 on S1.Item = S2.Item
WHERE S2.Date BETWEEN DATEADD(dd, -7, S1.Date) AND S1.Date
GROUP BY S1.Item, S1.Date
显然我把你的桌子称为“SlidingHitCount。”