如何选择彼此间隔30天的记录

时间:2016-04-26 16:29:13

标签: sql sql-server partitioning lag gaps-and-islands

我有一个看起来像这样的记录子集:

ID DATE
A  2015-09-01
A  2015-10-03
A  2015-10-10
B  2015-09-01
B  2015-09-10
B  2015-10-03
...

对于每个ID,我想选择相隔30天的所有记录,同时忽略两者之间的日期。

例如,对于ID A,将选择2015-09-01和2015-10-03,因为它们相隔超过30天。 2015-10-10将被删除,因为它在第二次约会的30天内。

对于ID B,2015-09-10将被删除,因为它在第一个索引记录的30天内。将选择2015-10-03,因为它超过了第1天的30天。

输出应如下所示:

ID DATE
A  2015-09-01
A  2015-10-03
B  2015-09-01
B  2015-10-03

我使用过LAG / LEAD功能,这些功能似乎只适用于即时上一个/下一个记录(即ID A)。我的问题是我必须在30天的时间范围内忽略日期(即ID B - 我如何在2015-10-03期间忽略2015-09-10)?

0 个答案:

没有答案