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

Skumulowana wartość bieżącego wiersza + suma poprzednich wierszy

Tak:

;WITH cte
AS
(
   SELECT ColumnB, SUM(ColumnA) asum 
   FROM @t 
   gROUP BY ColumnB

), cteRanked AS
(
   SELECT asum, ColumnB, ROW_NUMBER() OVER(ORDER BY ColumnB) rownum
   FROM cte
) 
SELECT (SELECT SUM(asum) FROM cteRanked c2 WHERE c2.rownum <= c1.rownum),
  ColumnB
FROM cteRanked c1;

Powinno to dać:

ColumnA    ColumnB
3             a
6             b
10            c
15            d

Oto demonstracja na żywo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uprawnienia do tworzenia kopii zapasowych

  2. Jak przeanalizować VARCHAR przekazany do procedury składowanej w SQL Server?

  3. Jak wykonać procedurę składowaną MS SQL Server w java/jsp, zwracając dane tabeli?

  4. LEFT() vs SUBSTRING() w SQL Server:jaka jest różnica?

  5. SQL Server - aktualna nazwa użytkownika