sql >> Databasteknik >  >> RDS >> Oracle

Fyll null-värden med sista icke-null-belopp - Oracle SQL

sista_värde med IGNORE NULLS fungerar bra i 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 ställer in fönstret för analytisk funktion.

I det här fallet söker Oracle efter LAST_VALUE i gruppen definierad i PARTITION BY (samma objekt) från början (UNBOUNDED PRECEDING) till nuvarande rad - 1 (1 PRECEDING)

Det är en vanlig ersättning för LEAD/LAG med IGNORE NULLS i Oracle 10g

Men om du använder Oracle 11g kan du använda LAG från Gordon Linoffs svar (det finns ett litet stavfel med "ignorera null")



  1. Behöver hjälp att förstå Magento produktsamlingsobjekt och katalogen/produktmodellen

  2. Vilken är snabbare:korrelerade underfrågor eller gå med?

  3. MySQL GRUPP GENOM ... ATT HA olika värden i samma fält

  4. Reporting Services-behörigheter på SQL Server R2 SSRS