sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL, udfyld manglende værdi med den nærmeste ikke-manglende

Din første version burde virke, med en lille justering:

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

Tweaken er at fjerne partition by v1 fra lag() . coalesce() er bare min præference for enklere udtryk.

Den samme tweak burde også virke for den anden version.

Din version virker ikke, fordi lag() værdi skal komme fra den samme partition (eller være null ). Når du har partition by v1 , sikrer du faktisk, at v1 har samme værdi som i den aktuelle række.



  1. Konverter 'datetime' til 'time' i SQL Server (T-SQL-eksempler)

  2. PHQL WHERE xxx IN () kan kun få 1 data

  3. Mysql-forespørgsel med to tabeller php

  4. Parse json gennem json_table i oracle 18