Or thisdeclare @t table (ID int,DATE datetime, DEBIT decimal(10,2), CREDIT decimal(10,2))insert @t select 1,'02/02/2012',100.00,0.00insert @t select 6,'04/04/2012',0.00,150.00insert @t select 3,'02/05/2012',70.00,0.00insert @t select 4,'02/05/2012',80.00,0.00insert @t select 2,'06/06/2012',120.00,0.00;with cte1 as(select *,ROW_NUMBER() OVER (Order by Date) as seqfrom @t) , cte2 as(select [DATE], DEBIT, CREDIT,Balance = cast(DEBIT - CREDIT as decimal(10,4)), seq from cte1 where seq = 1union allselect 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.Balancefrom cte2 JOIN cte1 ON cte2.seq = cte1.seqorder by cte1.DATE