可能重複:
How do I calculate a running total in SQL without using a cursor?獲得之前所有值的總和? - 到目前爲止?
這是一個有點難以解釋,所以我會展示我想用一個例子:
假設我們有如下表命名爲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
列profit
代表該月的利潤。
但是,如果我們在1月10日的利潤,並在2月20日,2月份我們有一個利潤總額的30
,所以我想創建一個視圖,顯示如下:
[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
我現在做了什麼來解決這個問題,是這樣的一個觀點:
SELECT [MonthId]
,[Profit]
, (SELECT SUM([Profit])
FROM MonthProfit
WHERE [MonthId] <= outer.[MonthId]) as ProfitTotal
FROM MonthProfit as outer
不過,我認爲這是相當緩慢的,因爲它有述說一切的時候,它似乎並不五個對我優雅。有沒有「好」的方法來做到這一點?
也http://stackoverflow.com/questions/814054/complicated-sql-query-for-a-running-total-column – JNK
只要搜索 「運行總SQL」 和你會在這方面得到很多點擊。 – JNK