Как разбить диапазон дат на кварталы?
Есть диапазон дат:
create table t1 (df,dl) as
select date'2020-02-03' df, date'2020-07-24' dl from dual
Как разбить диапазон дат на кварталы так, чтобы границы диапазона являлись началом первого и последнего кварталов соответственно?
Ожидаемый результат:
df | dl
-----------------------
03.02.2020 | 31.03.2020
01.04.2020 | 30.06.2020
01.07.2020 | 27.07.2020
Ответы (1 шт):
Автор решения: pr5
→ Ссылка
Решение составлено из нескольких подсказок в комментариях:
with t1 as (
select date'2020-02-03' df, date'2020-07-24' dl from dual )
select
case when level = 1
then t1.df
else add_months( trunc(t1.df, 'Q'), 3*(level - 1) )
end df,
case when add_months( trunc(t1.df, 'Q'), 3*(level) ) - 1 > t1.dl
then t1.dl
else add_months( trunc(t1.df, 'Q'), 3*(level) ) - 1
end dl
from t1
connect by add_months( trunc(t1.df, 'Q'), 3*(level-1) ) - 1 <= t1.dl;