sql >> Databasteknik >  >> RDS >> Sqlserver

SQL - löpande total när data redan är grupperad

ANSI-standardsättet att göra en kumulativ summa är:

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

Alla databaser stöder inte den här funktionen.

Om din databas inte stöder den funktionen, skulle jag välja en korrelerad underfråga:

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


  1. Postgres-versioner är inte kompatibla

  2. Enhetsattributvärdemodell - Prestandaalternativ?

  3. Kommandon är osynkroniserade; du kan inte köra det här kommandot nu SQL

  4. MySQL - Att ta reda på vilka index som ska användas och inte fungera som förväntat