Как взять только одну запись из таблицы на основе смещения к значению столбца даты - PullRequest
0 голосов
/ 12 июня 2018

У меня есть требование получать значения из таблицы на основе условий смещения в столбце даты.Скажем, например: для приведенной ниже таблицы, если есть какие-либо даты, которые приближаются в течение 15 дней на основе столбца даты вступления в силу, я должен вернуть только первое.

Table Content

Таким образом, мой ожидаемый результат будет следующим:

Здесь для политики A1234 возвращается запись 6/18/16 и пропущенная запись 6/12/16, поскольку смещение между этими двумя датами находится в пределах 15дней, и я взял последний из списка.

enter image description here

1 Ответ

0 голосов
/ 12 июня 2018

Если вы хотите сгруппировать строки, которые находятся в пределах 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...