Создание даты начала и окончания - PullRequest
0 голосов
/ 02 июля 2019

У меня есть таблица ниже

 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.Я использую updatedt для создания циклов, но я действительно хочу, чтобы циклы запускались на creatt, а не в первом обновлении.

1 Ответ

0 голосов
/ 02 июля 2019

Вы, кажется, хотите 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
...