У меня есть таблица ниже
Createdt Updatedt id
1/1/2019 3/1/2019 1
1/1/2019 5/1/2019 1
1/1/2019 7/1/2019 1
Ожидаемые результаты:
Createdt Start_dt_cycle End_dt_cycle id
1/1/2019 1/1/2019 2/28/2019 1
1/1/2019 3/1/2019 4/30/2019 1
1/1/2019 5/1/2019 06/30/2019 1
1/1/2019 7/1/2019 12/31/9999 1
Мои результаты:
Createdt Start_dt_cycle End_dt_cycle id
1/1/2019 3/1/2019 4/30/2019 1
1/1/2019 5/1/2019 06/30/2019 1
1/1/2019 7/1/2019 12/31/9999 1
Я использовал функцию LEAD, чтобы зафиксировать желаемый end_dt. Я использую updatet для создания циклов, но я действительно хочу, чтобы циклы запускались при создании, а не при первом обновлении.


Кажется, вы хотите union all и lead():
select id, start_dt_cycle,
lead(start_dt_cycle, 1, date '9999-12-31') over (partition by id order by start_dt_cycle) as end_dt_cycle
from ((select min(createddt) as start_dt_cycle, id
from t
group by id
) union all
(select updatedt, id
from t
)
) t
возможно, я создаю cte и объединяю все разные даты?