2

我有一个表,其中有如下列:

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 基于 - 按两个参数上的数据分组 - 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
4

1 回答 1

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

于 2012-09-12T05:16:42.583 回答