Here is one parameter using join , assuming your id fields are consecutive:
update t1 set t1.amount = t2.amountafter from test t1 join test t2 on t2.id = t1.id - 1
If you use 2012 or higher, look at lag :
with cte as ( select id, amount, lag(amount) over (order by id) prevamount from test ) update cte set amount = prevamount where prevamount is not null
And I think that to complete, 2008 will work with row_number if the numbers are not sequential (using a combination of both approaches):
with cte as ( select id, amount, row_number() over (order by id) rn from test ) update t1 set t1.amount = t2.amount from cte t1 join cte t2 on t2.rn = t1.rn - 1
source share