Дата с датой вступления в силу в одной строке - хотел выбрать в несколько строк - PullRequest
0 голосов
/ 13 марта 2020

У меня есть следующие данные в таблице.

Я пытаюсь построить результат с 3 строками для данной строки данных.

enter image description here

Поскольку между начальной и конечной датами следуют следующие даты начала и окончания исключения

Я ищу запрос, который возвращает приведенный ниже результат в запросе выбора, если это вообще возможно.

enter image description here

Также необязательно, чтобы даты начала и окончания исключения находились в пределах фактической даты начала и окончания. Они могут даже перекрываться или полностью выходить наружу.

Пожалуйста, руководство.

1 Ответ

0 голосов
/ 13 марта 2020

Очевидно, вы хотите выбрать три интервала

  • от фактической даты начала до начала исключения (эксклюзив)

  • от начала исключения до конца исключения

  • от конца исключения (эксклюзив) до фактического конца

Это делается прямо с помощью SELECT ниже.

Примечание, что вам нужно добавить или вычесть один день для исключительных границ

select PRODUCT, LOCATION,              ACT_START_D,   EXP_START_D -1  ACT_END_D from tab union all
select PRODUCT, LOCATION, EXP_START_D  ACT_START_D,   EXP_END_D       ACT_END_D from tab union all
select PRODUCT, LOCATION, EXP_END_D +1 ACT_START_D,                   ACT_END_D from tab
order by 1,2,3
;

возврат

P L ACT_START_D         ACT_END_D          
- - ------------------- -------------------
C L 10.12.2012 00:00:00 09.03.2020 00:00:00
C L 10.03.2020 00:00:00 10.04.2020 00:00:00
C L 11.04.2020 00:00:00 10.12.2024 00:00:00

Вы должны описать ожидаемый логик для внешнего и перекрывающегося исключения и настроить запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...