У меня есть следующая таблица, и я хотел бы получить antepenultimate или значение до предыдущего значения.
У меня уже есть group
, value
и prev_value
, dateint
. .. Я пытаюсь получить prev_prev_value
grp value prev_value prev_prev_value dateint
-----------------------------------------------------------
1 x null null 20200101
1 x null null 20200102
2 y x null 20200103
2 y x null 20200104
2 y x null 20200105
3 z y x 20200106
3 z y x 20200107
3 z y x 20200108
4 a z y 20200109
Это таблица с тестовыми данными (как CTE)
with test as (
select 1 as grp, 'x' as value , null as prev_value , 20200101 as dateint
union
select 1 as grp, 'x' as value , null as prev_value , 20200102 as dateint
union
select 2 as grp, 'y' as value , 'x' as prev_value , 20200103 as dateint
union
select 2 as grp, 'y' as value , 'x' as prev_value , 20200104 as dateint
union
select 2 as grp, 'y' as value , 'x' as prev_value , 20200105 as dateint
union
select 3 as grp, 'z' as value , 'y' as prev_value , 20200106 as dateint
union
select 3 as grp, 'z' as value , 'y' as prev_value , 20200107 as dateint
union
select 3 as grp, 'z' as value , 'y' as prev_value , 20200108 as dateint
union
select 4 as grp, 'a' as value , 'z' as prev_value , 20200109 as dateint
)
Любые идеи о том, как получить prev_prev_value
Я хотел бы использовать оконные функции и избегать объединений.
Я пробовал LAG
, но не добился успеха.