Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tích lũy giá trị của hàng hiện tại + tổng của các hàng trước đó

Như thế này:

;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;

Điều này sẽ cung cấp cho bạn:

ColumnA    ColumnB
3             a
6             b
10            c
15            d

Đây là bản trình diễn trực tiếp



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Vô hiệu hóa ràng buộc khóa ngoại, vẫn không thể cắt bớt bảng? (SQL Server 2005)

  2. Đặt giá trị mặc định trong cột IF điều kiện được đáp ứng trong SQL 2008

  3. Đặt giá trị ngày giờ UTC ở đâu trong ứng dụng n-tier:Lớp trình bày, Miền hoặc Cơ sở dữ liệu?

  4. Diễn đàn về hiệu suất máy chủ SQL tốt nhất để được trợ giúp về các câu hỏi hóc búa nhất

  5. Lược đồ cơ sở dữ liệu, tự động tăng