Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Füllen Sie Nullwerte mit dem letzten Nicht-Null-Betrag – Oracle SQL

letzter_Wert mit IGNORE NULLS funktioniert gut in Oracle 10g:

select item, year, month, amount, 
       last_value(amount ignore nulls) 
         over(partition by item 
              order by year, month 
              rows between unbounded preceding and 1 preceding) from tab;

rows between unbounded preceding and 1 preceding setzt das Fenster für die analytische Funktion.

In diesem Fall sucht Oracle nach LAST_VALUE innerhalb der in PARTITION BY definierten Gruppe (dasselbe Element) vom Anfang (UNBOUNDED PRECEDING) bis zur aktuellen Zeile - 1 (1 PRECEDING)

Es ist ein gängiger Ersatz für LEAD/LAG mit IGNORE NULLS in Oracle 10g

Wenn Sie jedoch Oracle 11g verwenden, können Sie LAG aus der Antwort von Gordon Linoff verwenden (es gibt einen kleinen Tippfehler mit „nullen ignorieren“)