Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL, remplissez la valeur manquante avec la valeur non manquante la plus proche

Votre première version devrait fonctionner, avec une légère modification :

select A.*, 
       coalesce(V1, lag(V1 ignore nulls)  over (order by data)) V2
from Tab1 A;

Le tweak consiste à supprimer la partition by v1 du lag() . Le coalesce() est juste ma préférence pour les expressions plus simples.

Le même réglage devrait également fonctionner pour la deuxième version.

Votre version ne fonctionne pas car le lag() la valeur doit provenir de la même partition (ou être null ). Lorsque vous avez partition by v1 , vous vous assurez en fait que v1 a la même valeur que dans la ligne actuelle.