Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Preencha valores nulos com o último valor não nulo - Oracle SQL


last_value com IGNORE NULLS funciona bem no 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 define a janela para a função analítica.

Neste caso, o Oracle está procurando por LAST_VALUE dentro do grupo definido em PARTITION BY (o mesmo item) desde o início (UNBOUNDED PRECEDING) até a linha atual - 1 (1 PRECEDING)

É um substituto comum para LEAD/LAG com IGNORE NULLS no Oracle 10g

No entanto, se você estiver usando o Oracle 11g, poderá usar o LAG da resposta de Gordon Linoff (há um pequeno erro de digitação com "ignore nulls")