thể trùng lặp:
How do I calculate a running total in SQL without using a cursor?Nhận tổng của tất cả các giá trị trước đó? - Tổng số cho đến nay?
Đó là một chút khó khăn để giải thích, vì vậy tôi sẽ hiển thị những gì tôi muốn với một ví dụ:
phép nói rằng chúng ta có bảng sau có tên MonthProfit
:
[MonthId][Profit]
1, 10 -- January
2, 20 -- February
3, 30
4, 40
5, 50
6, 60
7, 70
8, 80
9, 90
10, 100
11, 110
12, 120 -- December
Cột profit
thể hiện lợi nhuận cho tháng đó.
Tuy nhiên, nếu chúng tôi có 10 lợi nhuận vào tháng Giêng, và 20 trong tháng, vào tháng Hai chúng tôi có một lợi nhuận tổng cộng 30.
vì vậy tôi muốn tạo một cái nhìn thể hiện như sau:
[MonthId][Profit][ProfitTotal]
1, 10, 10 -- January
2, 20, 30 -- February
3, 30, 60
4, 40, 100
5, 50, 150
6, 60, 210
7, 70, 280
8, 80, 360
9, 90, 450
10, 100, 550
11, 110, 660
12, 120, 780 -- December
những gì tôi đã làm tại để giải quyết nó, là một cái nhìn như thế này:
SELECT [MonthId]
,[Profit]
, (SELECT SUM([Profit])
FROM MonthProfit
WHERE [MonthId] <= outer.[MonthId]) as ProfitTotal
FROM MonthProfit as outer
Tuy nhiên, tôi cho rằng điều này là khá chậm bởi vì nó có để kể lại tất cả mọi thứ trong mọi lúc, và nó dường như không đã ry tao nhã với tôi. Có cách nào "tốt" để làm điều này không?
cũng http://stackoverflow.com/questions/814054/complicated-sql-query-for-a-running-total-column – JNK
Chỉ cần tìm kiếm cho "Running tổng SQL" và bạn sẽ nhận được nhiều lượt truy cập về điều này. – JNK