Получение последних записей интервалов агрегирования
Функция
Определяет для каждой записи выборки последнее значение в её интервале агрегирования.
Спецификация
<последняя запись>
::=
LAST_VALUE() OVER-спецификация
Синтаксические правила
-
<Значимые выражения>
в<OVER-спецификации>
задают столбцы выборки, по которым выполняется разбивка выборки на интервалы агрегирования. -
<Имена столбцов>
в<ORDER BY-спецификации>
внутри<OVER-спецификации>
задают имена упорядочиваемых столбцов.
Общие правила
-
Для каждой записи выборки возвращается последнее значение того интервала агрегирования, которому принадлежит эта запись.
create or replace table ntest(i int, j int); insert into ntest values(1,NULL); insert into ntest values(2,NULL); insert into ntest values(2,NULL); insert into ntest values(2,20); insert into ntest values(3,30); insert into ntest values(3,NULL); insert into ntest values(3,NULL); insert into ntest values(4,40); insert into ntest values(4,NULL); insert into ntest values(4,41); insert into ntest values(5,50); select * from ntest; I J - - | 1| | | 2| | | 2| | | 2| 20| | 3| 30| | 3| | | 3| | | 4| 40| | 4| | | 4| 41| | 5| 50| SELECT i as "Интервал", nvl(cast LAST_VALUE(j) over(partition by i) as char, 'null') as "Первое значение" FROM ntest; Интервал Первое значение -------- --------------- | 1|NULL | | 2|20 | | 2|20 | | 2|20 | | 3|NULL | | 3|NULL | | 3|NULL | | 4|41 | | 4|41 | | 4|41 | | 5|50 |