sql server 2008 - SQL failing to add value from previous row into the next -


i trying add value of previous row current row column cumulative

select      ddate date, etype, reference, linkacc contraacc,     description,     sum(case when amount > 0 amount else 0 end) debits,     sum(case when amount < 0 amount else 0 end) credits,     sum(amount) cumulative     dbo.vw_lt     accnumber ='8400000'      , [ddate] between '2016-04-01 00:00:00' , '2016-04-30 00:00:00'     , [datasource] = 'pas11cedcre17' group      ddate, etype, reference, linkacc, description, amount 

output(what getting):

date        reference   contraacc   description debits  credits cumulative  -------------------------------------------------------------------------- 2016-04-01     cc007    8000000     d/cc007      0      -39.19    -39.19 2016-04-01     cc007    8000000     d/cc007     1117.09     0     1117.09 2016-04-01     cc009    8000000     cc009       2600        0       2600 

in cumulative column should below(what need):

date        reference   contraacc   description debits  credits cumulative  -------------------------------------------------------------------------- 2016-04-01     cc007    8000000     d/cc007      0      -39.19    -39.19 2016-04-01     cc007    8000000     d/cc007     1117.09     0     1077.9 2016-04-01     cc009    8000000     cc009       2600        0     3677.9 

before delve solution, let me tell if using sql server version more 2012, there lag , lead, can solve this.

i not giving exact query solve problem (as dont know primary key table is), can idea seeing below example

declare @t table (     accountnumber   varchar(50)     ,dt             datetime     ,transactedamt  bigint )  insert @t values ('0001','7/20/2016',1000) insert @t values ('0001','7/21/2016',-1000) insert @t values ('0001','7/22/2016',2000)  insert @t values ('0002','7/20/2016',500) insert @t values ('0002','7/21/2016',-500) insert @t values ('0002','7/22/2016',2000)  ;with cte (     select row_number() over(partition accountnumber order dt) rn, *      @t ),cte1 (     select *,transactedamt totalbalance     cte rn = 1     union     select t1.*,t1.transactedamt + t0.transactedamt totalbalance     cte t1     join cte    t0     on  t1.accountnumber = t0.accountnumber     , t1.rn = t0.rn+1     , t1.rn > 1 ) select * cte1 order accountnumber 

Comments