Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL - bieżąca suma, gdy dane są już zgrupowane

Standardowy sposób wykonywania sumy skumulowanej według ANSI to:

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

Nie wszystkie bazy danych obsługują tę funkcję.

Jeśli twoja baza danych nie obsługuje tej funkcjonalności, wybrałbym skorelowane podzapytanie:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obróć nieznaną zawartość kolumny

  2. Śledzenie zmienionych pól bez prowadzenia historii

  3. Zadanie agenta SQL Server — eksport wyników do pliku rozdzielanego tabulatorami?

  4. 2 sposoby na zwrócenie wszystkich funkcji zdefiniowanych przez użytkownika w bazie danych SQL Server

  5. Jak zwrócić wartość kodu ASCII dla danego znaku w SQL Server