Очевидно, вы хотите выбрать три интервала
от фактической даты начала до начала исключения (эксклюзив)
от начала исключения до конца исключения
от конца исключения (эксклюзив) до фактического конца
Это делается прямо с помощью 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
Вы должны описать ожидаемый логик для внешнего и перекрывающегося исключения и настроить запрос