I think this might do it...
SELECT hi.Date,
hi.Area,
CASE WHEN hi.Amount = 0 THEN ISNULL(lo.Amount,0) ELSE hi.Amount END AS Amount,
hi.AOD
FROM MyTable lo
RIGHT JOIN MyTable hi ON lo.Date = hi.Date
AND lo.AOD = DATEADD(mm,-1,hi.AOD)
ORDER BY hi.AOD,hi.Date
--Jeff Moden
Change is inevitable... Change for the better is not.