Sql 如何基于日期列值的偏移量从表中仅获取一个条目

Sql 如何基于日期列值的偏移量从表中仅获取一个条目,sql,sql-server,join,Sql,Sql Server,Join,我需要根据日期列上的偏移条件从表中获取值。 例如:对于下面的附表,如果根据effectivedate列有任何日期在15天内接近,我应该只返回第一个日期 因此,我的预期结果如下: 对于A1234策略,它返回6/18/16条目,跳过6/12/16条目,因为这两个日期之间的偏移量在15天之内,我从列表中选择了最新的一个 如果要将彼此相隔15天的行组合在一起,则会出现一种不同的间隙和孤岛问题。对于此版本,我建议使用lag()和累积总和: select polno, min(effectivedate)

我需要根据日期列上的偏移条件从表中获取值。 例如:对于下面的附表,如果根据effectivedate列有任何日期在15天内接近,我应该只返回第一个日期

因此,我的预期结果如下:

对于A1234策略,它返回6/18/16条目,跳过6/12/16条目,因为这两个日期之间的偏移量在15天之内,我从列表中选择了最新的一个


如果要将彼此相隔15天的行组合在一起,则会出现一种不同的间隙和孤岛问题。对于此版本,我建议使用
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;

如果有一系列这样的日期呢?你需要澄清这个问题——例如1月1日、1月10日、1月20日、1月30日、2月10日。