sql >> Databáze >  >> RDS >> Sqlserver

SQL - průběžný součet, když jsou data již seskupena

Standardní způsob ANSI, jak provést kumulativní součet, je:

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

Ne všechny databáze tuto funkci podporují.

Pokud vaše databáze tuto funkci nepodporuje, použil bych korelovaný poddotaz:

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


  1. Přesnost datového typu SYSDATETIME na serveru SQL

  2. V dotazu UPDATE je něco špatně

  3. Správné použití IsNULL a Coalesce

  4. Problém výpočtu týdne Oracle