Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL - total em execução quando os dados já estão agrupados


A maneira padrão ANSI de fazer uma soma cumulativa é:
select t.*, sum(totalpmtamt) over (order by mdate) as runningsum
from #testdata t
order by t.mdate;

Nem todos os bancos de dados suportam essa funcionalidade.

Se o seu banco de dados não suportar essa funcionalidade, eu usaria uma subconsulta correlacionada:
select t.*,
       (select sum(t2.totalpmtamt)
        from #testdata t2
        where t2.mdate <= t.mdate
       ) as runningsum
from #testdata
order by t.mdate;