我在制定SQL查询时遇到问题,该查询从包含日期的列中返回彼此间隔最多20天的所有日期集。
因此,例如,如果日期是
1/1/2000, 1/15/2000, 1/20/2000, 2/1/2000
这些集合将是:
{(1/1/2000, 1/15/2000, 1/20/2000), (1/15/2000, 1/20/2000, 2/1/2000)}
我只想要最大的设置:例如(1/1 / 2000,1 / 15/2000)不包括在内,因为它将是另一组的子集。
我怀疑答案会使用交叉连接。
答案 0 :(得分:0)
标准SQL看起来像这样:
select t.date as SetIdentifier, t2.date as date
from t join
t t2
on t2.date >= t.date and t2.date < t.date + interval '21 day'
order by t.date, t2.date;
这标识集合中第一天的每一组(假设所有日期都是唯一的)。