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

Riempi i valori nulli con l'ultimo importo non nullo - Oracle SQL

ultimo_valore con IGNORE NULLS funziona bene 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 imposta la finestra per la funzione analitica.

In questo caso Oracle sta cercando LAST_VALUE all'interno del gruppo definito in PARTITION BY (lo stesso elemento) dall'inizio (UNBOUNDED PRECEDING) fino alla riga corrente - 1 (1 PRECEDING)

È un sostituto comune di LEAD/LAG con IGNORE NULLS in Oracle 10g

Tuttavia, se stai utilizzando Oracle 11g puoi utilizzare LAG dalla risposta di Gordon Linoff (c'è un piccolo errore di battitura con "ignora i valori nulli")