Интервал между следующей датой - PullRequest
1 голос
/ 20 мая 2019

У меня есть структура таблицы, как показано ниже. Теперь я хочу вычислить интервал между следующей датой прихода из второго столбца

СТРУКТУРА ТАБЛИЦЫ

Calendar    |NEXT DAY    

15-07-1997   15-07-1997    
16-07-1997                  
17-07-1997                 
18-07-1997   18-07-1997     
19-07-1997                 
20-07-1997                 
21-07-1997                 
22-07-1997                 
23-07-1997                 
24-07-1997                 
25-07-1997                 
26-07-1997    26-07-1997    

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ

Calendar   |NEXT DAY    |DIFFDATE|

15-07-1997   15-07-1997    0
16-07-199                  2
17-07-1997                 1
18-07-1997   18-07-1997    0    
19-07-1997                 7
20-07-1997                 6
21-07-1997                 5
22-07-1997                 4
23-07-1997                 3
24-07-1997                 2
25-07-1997                 1
26-07-1997    26-07-1997   0

1 Ответ

1 голос
/ 20 мая 2019

Вы можете использовать lead(ignore nulls):

select t.*,
       (coalesce(next_day,
                 lead(next_day ignore nulls) over (order by calendar)
                ) - calendar
       ) as diffdate
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...