Quick example I've just posted on the NNTP news groups.
It's an example of how to create a running (cumulative) total in both a SELECT and UPDATE statements..
declare @data table (
some_date datetime not null,
some_value int not null,
running_total int null -- will populate later
)
insert @data ( some_date, some_value ) values( '1 jan 2006', 1 )
insert @data ( some_date, some_value ) values( '1 feb 2006', 1 )
insert @data ( some_date, some_value ) values( '1 mar 2006', 1 )
insert @data ( some_date, some_value ) values( '1 apr 2006', 1 )
insert @data ( some_date, some_value ) values( '1 may 2006', 1 )
insert @data ( some_date, some_value ) values( '1 jun 2006', 1 )
select some_date,
actual = some_value,
running_total = ( select sum( some_value )
from @data d2
where d2.some_date <= d1.some_date )
from @data d1
order by some_date
-- To update...
update d1
set running_total = ( select sum( some_value )
from @data d2
where d2.some_date <= d1.some_date )
from @data d1
select *
from @data
order by some_date