Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL - total cumulé lorsque les données sont déjà regroupées

La manière standard ANSI de faire une somme cumulée est :

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

Toutes les bases de données ne prennent pas en charge cette fonctionnalité.

Si votre base de données ne prend pas en charge cette fonctionnalité, j'opterais pour une sous-requête corrélée :

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