У нас есть таблица со столбцами Effective_Date, CVal, CPrice
Как запросить таблицу, чтобы получить значения из этих 2 строк в 1 строке:
CVal Значения (NextVal) и CPrice (NextPrice) из строки с Effective_Date на следующую дату после некоторой даты
Значения CVal (SecondVal) и CPrice (SecondPrice) из строки с Effective_Date на следующую дату после Effective_Date от # 1
Например:
Effective_Date CVal CPrice
01-JAN-19 1 100
01-JAN-20 2 101
01-JAN-21 3 102
01-JAN-22 4 103
Say somedate = '31 -DE C -19 '
Ожидаемый результат
(следующая дата после '31 -DE C -19 'в столбце Effective_Date - 01-JAN-20,
, а следующая дата после этого - 01-JAN-21):
NextVal NextPrice SecondVal SecondPrice
2 101 3 102
Спасибо.
Отредактировано с ответом от zip (заменил "top" на где rownum = 1, так как top не работает на моем Oracle):
select t.* from
(
lead(CVal, 1) over(order by Effective_Date) as NextVal
,lead(CPrice, 1) over(order by Effective_Date) as NextPrice
,lead(CVal, 2) over(order by Effective_Date) as SecondVal
,lead(CPrice, 2) over(order by Effective_Date) as SecondPrice
from tbl where Effective_Date >= '31-DEC-19'
order by Effective_Date ) t
where rownum = 1