【发布时间】:2012-02-09 12:19:16
【问题描述】:
如何在sql中按日期范围对记录进行分组?
考虑一下这个表结构。
Key ID VISITDATE
1 1 2011-01-07
2 1 2011-01-09
3 2 2011-01-10
4 1 2011-01-12
5 3 2011-01-12
6 1 2011-01-18
7 2 2011-01-21
9 1 2011-02-28
10 2 2011-03-21
11 1 2011-01-06
12 1 2011-02-29
我需要获取出现次数。如果您在 10 天内对同一个 ID 进行了两次访问,则应仅计算一次访问。 因此,对于给定 id 1 = 3 (01/06,01/18,02/28) 的出现次数的示例
非常感谢递归 CTE 查询。
【问题讨论】:
-
你还没有真正描述你的范围是什么。是一周吗?范围是开始还是周末结束有关系吗?另外,您为什么关心它是否是递归 CTE?它提供您正在寻找的答案不是更重要吗?此外,您能否从给定的样本数据中显示您想要的结果,而不仅仅是描述它? (顺便说一句,2011-02-29 不是有效日期!)
-
澄清一下,如果您在
(0, 5, 10, 15)天有访问,您似乎将它们归为(0, 5, 10), (15),即使第三次和第四次访问相隔不到 10 天。那是对的吗?获得(0, 5, 10), (15)而不是(0), (5, 10, 15)重要吗? -
仍然不清楚为什么 1/6 和 1/15 被认为是分开的。那些是“10 天内”不是吗?
-
@dems 。我需要按组的第一次访问对它们进行分组。所以如果我有
(0,5,10,15)那么分组将是(0,5,10)和(15) -
@Aaron,我想我在 1/6 和 1/15 上做错了。
标签: sql sql-server sql-server-2005 sql-server-2008-r2