Колонку дат разобрать по парам записей

Имеем: Таблица Т1 с колонкой дат. Нужно сделать: таблицу T2 с двумя колонками effective_from_date и effective_to_date

Считаем, что даты лежат в Т1 (если ее упорядочить по возрастанию даты нужными парами). Можно ли такую операцию сделать SQL запросом с оконными функциями (без соединения таблицы самой с собой)? Если да, то каким?


Ответы (1 шт):

Автор решения: Sergey
with xxx as (
       select 
        t1.*,
       case
             when mod(t1.rrnn,2) = 1 then t1.effective_date end as eff_from
             ,
       lead((case
             when mod(t1.rrnn,2) = 0 then t1.effective_date end),1) over() as eff_to_pr
       from
       (select 
             *,
             row_number() over(order by effective_date ) as rrnn
             from t1)  
       select id,
              eff_from,
              eff_to_pr
       from xxx where eff_from is not null
→ Ссылка