Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle SQL, uzupełnij brakującą wartość najbliższym brakiem

Twoja pierwsza wersja powinna działać, z niewielką poprawką:

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

Ulepszenie polega na usunięciu partition by v1 z lag() . coalesce() to tylko moja preferencja dla prostszych wyrażeń.

Ta sama zmiana powinna działać również w drugiej wersji.

Twoja wersja nie działa, ponieważ lag() wartość musi pochodzić z tej samej partycji (lub być null ). Gdy masz partition by v1 , faktycznie zapewniasz, że v1 ma taką samą wartość jak w bieżącym wierszu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj instrukcję z wewnętrznym sprzężeniem w Oracle

  2. Który jar na serwerze weblogic/innych zasobach może mieć klasę:oracle.security.jps.ee.http.JpsFilter?

  3. pusty ciąg w wyroczni

  4. TO_YMINTERVAL() Funkcja w Oracle

  5. Wstawianie wielu wierszy z sekwencją w Oracle