Oracle
 sql >> Base de données >  >> RDS >> Oracle

Remplir les valeurs nulles avec le dernier montant non nul - Oracle SQL

dernière_valeur avec IGNORE NULLS fonctionne bien dans 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 définit la fenêtre pour la fonction analytique.

Dans ce cas, Oracle recherche LAST_VALUE dans le groupe défini dans PARTITION BY (le même élément) depuis le début (UNBOUNDED PRECEDING) jusqu'à la ligne actuelle - 1 (1 PRECEDING)

C'est un remplacement courant pour LEAD/LAG avec IGNORE NULLS dans Oracle 10g

Cependant, si vous utilisez Oracle 11g, vous pouvez utiliser LAG à partir de la réponse de Gordon Linoff (il y a une petite faute de frappe avec "ignorer les nulls")