Cho phép đầu tiên tạo ra một bảng với dữ liệu giả ->
Create Table CUMULATIVESUM (id tinyint , SomeValue tinyint)
**Now let put some data in the table**
Insert Into CUMULATIVESUM
Select 1, 10 union
Select 2, 2 union
Select 3, 6 union
Select 4, 10
đây tôi đang tham gia cùng bảng (TỰ Gia nhập)
Select c1.ID, c1.SomeValue, c2.SomeValue
From CumulativeSum c1, CumulativeSum c2
Where c1.id >= c2.ID
Order By c1.id Asc
KẾT QUẢ:
ID SomeValue SomeValue
1 10 10
2 2 10
2 2 2
3 6 10
3 6 2
3 6 6
4 10 10
4 10 2
4 10 6
4 10 10
ở đây chúng tôi đi ngay bây giờ chỉ tính tổng someValue của t2 và we`ll được ans
Select c1.ID, c1.SomeValue, Sum(c2.SomeValue) CumulativeSumValue
From CumulativeSum c1, CumulativeSum c2
Where c1.id >= c2.ID
Group By c1.ID, c1.SomeValue
Order By c1.id Asc
cho SQL Server 2012 và ở trên (Much better thực hiện)
Select c1.ID, c1.SomeValue,
SUM (SomeValue) OVER (ORDER BY c1.ID)
From CumulativeSum c1
Order By c1.id Asc
Kết quả mong muốn
ID SomeValue CumlativeSumValue
1 10 10
2 2 12
3 6 18
4 10 28
Drop Table CumulativeSum
Xóa dummytable
Nguồn
2012-11-23 10:12:13
Bắt tổng số chạy trong T-SQL không khó, có nhiều câu trả lời đúng, hầu hết trong số họ khá dễ dàng. Những gì không phải là dễ dàng (hoặc thậm chí có thể tại thời điểm này) là viết một truy vấn đúng trong T-SQL để chạy tổng số đó là hiệu quả. Chúng đều là O (n^2), mặc dù chúng có thể dễ dàng là O (n), ngoại trừ T-SQL không tối ưu hóa cho trường hợp này. Bạn có thể nhận được O (n) bằng cách sử dụng con trỏ và/hoặc trong khi vòng lặp, nhưng sau đó bạn đang sử dụng con trỏ. (* blech! *) – RBarryYoung