sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL, complete el valor faltante con el no faltante más cercano

Su primera versión debería funcionar, con una ligera modificación:

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

El ajuste es eliminar la partición partition by v1 del lag() . El coalesce() es solo mi preferencia por expresiones más simples.

El mismo ajuste también debería funcionar para la segunda versión.

Tu versión no funciona porque lag() el valor debe provenir de la misma partición (o ser null ). Cuando tienes partition by v1 , en realidad te estás asegurando de que v1 tiene el mismo valor que en la fila actual.