आप जो चाहते हैं वह है lag(ignore nulls)
. दो विंडो फ़ंक्शंस का उपयोग करके आप जो चाहते हैं उसे करने का एक तरीका यहां दिया गया है। पहला समूह को NULL
. के लिए परिभाषित करता है मान और दूसरा मान निर्दिष्ट करता है:
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;
आप इसे सरणियों का उपयोग करके बिना सबक्वेरी के भी कर सकते हैं। मूल रूप से, अंतिम तत्व को न गिनें NULL
रों:
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;
यहां एक डीबी<>बेला है।