TL / DR. Существует много типов транзакций для каждой политики, все начинаются с «N», поскольку это новая бизнес-транзакция. R = Обновление и обычно следуют каждый год. «C» означает, что политика была отменена, а «U» означает, что она была восстановлена, что отменяет отмену. Мне нужно знать, отменила ли (0) или в течение 90 дней после регистрации N запись (0) или не была отменена или отменена отмена, которая также произошла в этом 90-дневном окне (1).
ОЧЕНЬ похож на этот вопрос: SQL Сервер: Найти записи с ближайшей датой к текущей дате на основе условий
Мои данные выглядят так, для 4 политик (ID ).
Trs | Id | Effective_Dt | Expiration_DT
N | 01 | 2018-01-08 | 2018-01-23
C | 01 | 2018-01-23 | 2018-02-03
U | 01 | 2018-02-03 | 2019-01-08
R | 01 | 2019-01-08 | 2020-01-08
R | 01 | 2020-01-08 | 2021-01-08
N | 02 | 2019-10-10 | 2019-12-01
C | 02 | 2019-12-01 | NULL
N | 03 | 2017-06-10 | 2017-11-01
C | 03 | 2017-11-01 | NULL
N | 04 | 2017-06-10 | 2017-07-01
C | 04 | 2017-07-01 | 2017-11-01
U | 04 | 2017-11-01 | NULL
каждая запись - это новая транзакция в политике, где N = новая деловая запись, C = отменено, U = восстановлено (отменить отмену), R = возобновление
Срок действия обычно составляет 1 год с даты вступления в силу продлений, но в случае отмены даты истечения срока действия является датой вступления в силу новой транзакции.
Для этого вопроса я специально занимаюсь транзакциями N, C и U; но я включил R, чтобы вы получили представление о том, как выглядят данные. Что мне нужно знать, так это то, какие политики (0 в случае отмены или 1 индикатор в случае сохранения) имели тип транзакции C в течение 90 дней с момента их типа транзакции N ... и НЕ следовали U в течение того же периода.
Пример / результат:
Id | Retained
01 | 1
02 | 0
03 | 1
04 | 0
Подробности:
Для политики 01 N наступает 2018-01-08. 90 дней с этого будет 2018-04-08. Запись C 2018-01-23 была отменена 2018-02-03; который попадает в диапазон 90 дней. Таким образом, эта политика получит 1 за сохранение.
Политика 02 N происходит в 2019-10-10. 90 дней с этого будет 2020-01-08. Запись C 2019-12-01 не была отменена. Таким образом, эта политика получит 0 за отмену.
Политика 03: N происходит в 2017-06-10. Запись C на 2017-11-01 произошла после 90 дней. Таким образом, для этой политики будет сохранено значение 1.
Политика 04: N происходит в 2017-06-10. Запись C в 2017-07-01 произошла до 90 дней, а затем была отменена в 2017-11-01-- но это после 90 дней. Таким образом, эта политика получит 0.
Я надеюсь, что это не слишком плохо задано ... но в основном берется дата транзакции N для каждой политики, сравнивая ее с последней U или C транзакция, произошедшая в течение 90 дней после N. Если это C, 0, иначе 1.