last_value IGNORE NULLSを使用すると、Oracle10gで正常に機能します。
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
分析関数のウィンドウを設定します。
この場合、Oracleは、PARTITION BY(同じ項目)で定義されたグループ内で、先頭(UNBOUNDED PRECEDING)から現在の行-1(1 PRECEDING)までのLAST_VALUEを検索しています
これは、Oracle10gのLEAD/LAGをIGNORENULLSに置き換える一般的な方法です
ただし、Oracle 11gを使用している場合は、Gordon Linoffの回答からLAGを使用できます(「nullを無視する」という小さなタイプミスがあります)