आपका पहला संस्करण एक मामूली बदलाव के साथ काम करना चाहिए:
select A.*,
coalesce(V1, lag(V1 ignore nulls) over (order by data)) V2
from Tab1 A;
ट्वीक partition by v1
को हटाना है lag()
. से . coalesce()
सरल भावों के लिए बस मेरी प्राथमिकता है।
वही ट्वीक दूसरे संस्करण के लिए भी काम करना चाहिए।
आपका संस्करण काम नहीं करता क्योंकि lag()
मान एक ही विभाजन से आना चाहिए (या null
. होना चाहिए ) जब आपके पास partition by v1
. हो , आप वास्तव में यह सुनिश्चित कर रहे हैं कि v1
वर्तमान पंक्ति के समान मान है।