Or this
declare @t table (ID int,DATE datetime, DEBIT decimal(10,2), CREDIT decimal(10,2))
insert @t select 1,'02/02/2012',100.00,0.00
insert @t select 6,'04/04/2012',0.00,150.00
insert @t select 3,'02/05/2012',70.00,0.00
insert @t select 4,'02/05/2012',80.00,0.00
insert @t select 2,'06/06/2012',120.00,0.00
;with cte1 as
(
select *,ROW_NUMBER() OVER (Order by Date) as seq
from @t
)
, cte2 as
(
select [DATE], DEBIT, CREDIT,Balance = cast(DEBIT - CREDIT as decimal(10,4)), seq
from cte1 where seq = 1
union all
select cte2.[DATE], cte2.DEBIT, cte2.CREDIT, Balance = cast(cte2.Balance + cte1.DEBIT - cte1.CREDIT as decimal(10,4)), cte2.seq + 1
from cte1 join cte2 on cte1.seq = cte2.seq + 1
)
select cte1.ID,cte1.DATE, cte1.DEBIT, cte1.CREDIT, cte2.Balance
from cte2 JOIN cte1 ON cte2.seq = cte1.seq
order by cte1.DATE