sql查询按数据分组使用id和给定日期的最后7天

时间:2012-09-12 04:50:14

标签: sql-server-2008 group-by

我有一张表格,其中包含以下列:

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

1 个答案:

答案 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。”