sql – 滚动时间范围内的总计

我的数据安排如下:

obj_id    quantity date
1         3        2014-05-06
2         2        2014-03-12
3         5        2014-10-07
4         7        2014-05-09
2         8        2014-12-31
1         5        2014-01-16
4         1        2014-07-26
3         2        2014-09-15
...

我需要的是找到具有SUM(数量)>的OBJ_ID. MAX超过RANGE天数.
在我的情况下,MAX为18,RANGE为31天.

换句话说,每个给定的OBJ_ID不时收到QUANTITY(无论什么).我需要找到总共超过18个的OBJ_ID以及这个OBJ_ID收到Qs的日期超过31天.卫生署).

我想我需要在这里使用LAG,但不确定整个事情应该如何.

提前致谢.

最佳答案 这可能需要一些调整,因为我没有时间对它进行适当的测试,但也许它会让你走上正轨:

(我假设您想要记录日期在过去31天内的记录)

SELECT SUM(quantity)
FROM tblTable
WHERE date between DATEADD(day, -RANGE, GETDATE()) and GETDATE()
HAVING SUM(quantity) > MAX
GROUP BY obj_id
点赞