We have a table variable say MyTable, structure like below.
declare @MyTable Table
(
TrnDate Date, -- Transaction Date
CrDb char(1), -- Credit/Debit
Amount money
)
-- Data population
insert into @MyTable values
('01-jul-2012','C',1000),('02-jul-2012','D',200),('03-jul-2012','C',2500),('04-jul-2012','C',800),('05-jul-2012','D',5000)
--select * from @MyTable
we need a single query to get the result as below.
TrnDate CrDb Amount Balance
---------- ---- --------------------- ---------------------
2012-07-01 C 1000.00 1000.00
2012-07-02 D 200.00 800.00
2012-07-03 C 2500.00 3300.00
2012-07-04 C 800.00 4100.00
2012-07-05 D 5000.00 -900.00
select TrnDate,CrDb,a.Amount,t.Balance
from @MyTable a
cross apply
(
select sum(case when crdb = 'C' then amount else amount*-1 end) as Balance
from @MyTable b
where b.TrnDate <= a.TrnDate
) t
No comments:
Post a Comment