最初のバージョンは、少し調整するだけで機能するはずです:
select A.*,
coalesce(V1, lag(V1 ignore nulls) over (order by data)) V2
from Tab1 A;
微調整は、partition by v1することです。 lag()から 。 coalesce() 単純な表現が好きです。
同じ調整が2番目のバージョンでも機能するはずです。
lag()が原因で、お使いのバージョンが機能しません 値は同じパーティションからのものである必要があります(またはnullである必要があります )。 partition by v1がある場合 、実際にはv1 現在の行と同じ値です。