sql >> Base de Datos >  >> RDS >> Sqlserver

SQL:total acumulado cuando los datos ya están agrupados

La forma estándar ANSI de hacer una suma acumulativa es:

select t.*, sum(totalpmtamt) over (order by mdate) as runningsum
from #testdata t
order by t.mdate;

No todas las bases de datos admiten esta función.

Si su base de datos no es compatible con esa funcionalidad, buscaría una subconsulta correlacionada:

select t.*,
       (select sum(t2.totalpmtamt)
        from #testdata t2
        where t2.mdate <= t.mdate
       ) as runningsum
from #testdata
order by t.mdate;