Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL - laufende Summe, wenn Daten bereits gruppiert sind

Die ANSI-Standardmethode für eine kumulative Summe ist:

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

Nicht alle Datenbanken unterstützen diese Funktionalität.

Wenn Ihre Datenbank diese Funktionalität nicht unterstützt, würde ich mich für eine korrelierte Unterabfrage entscheiden:

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