Yang Anda inginkan adalah lag(ignore nulls)
. Berikut adalah salah satu cara untuk melakukan apa yang Anda inginkan, menggunakan dua fungsi jendela. Yang pertama mendefinisikan pengelompokan untuk NULL
nilai dan yang kedua memberikan nilai:
select idx, value, coalesce(value, max(value) over (partition by grp))
from (select b.*, count(value) over (order by idx) as grp
from base b
) b
order by idx;
Anda juga dapat melakukan ini tanpa subquery dengan menggunakan array. Pada dasarnya, ambil elemen terakhir tidak termasuk NULL
s:
select idx, value,
(array_remove(array_agg(value) over (order by idx), null))[count(value) over (order by idx)]
from base b
order by idx;
Di sini adalah db<>biola.