我需要根据日期列上的偏移条件从表中获取值。 比如说:对于下面附表,如果有任何日期在15天内基于有效日期列出来,我应该只返回第一个日期。
所以我的预期结果如下:
这里针对A1234政策,它返回6/18/16条目并跳过6/12/16条目,因为这两个日期之间的偏差在15天之内,我从列表中选取了最新的一条。
答案 0 :(得分:0)
如果要将彼此在15天内的行组合在一起,那么您就有了gap-and-islands问题的变体。我建议lag()
和此版本的累积总和:
select polno, min(effectivedate), max(expirationdate)
from (select t.*,
sum(case when prev_ed >= dateadd(day, -15, effectivedate)
then 1 else 0
end) over (partition by polno order by effectivedate) as grp
from (select t.*,
lag(expirationdate) over (partition by polno order by effectivedate) as prev_ed
from t
) t
) t
group by polno, grp;