我有一個相當複雜的查詢(大約需要30秒執行)返回我下面的數據集:在SQL查詢中積累列
Month Buy Sell
2010/10 1 2
2010/11 1 3
2010/12 2 5
而這裏的查詢:
select month, avg(buy) [buy], avg(sell) [sell] from products group by month order by month
現在我想添加兩個累積列,預期結果集如下:
Month Ac. Buy Ac. Sell
2010/10 1 2
2010/11 2 5
2010/12 4 10
我正在嘗試使用此查詢
select
distinct x.month
,(select SUM(buy) from products where month <= x.month) [Ac Buy]
,(select SUM(sell) from products where month <= x.month) [Ac Sell]
from products X
order by x.month
但是,這太長了!
有什麼辦法可以更快地做到這一點?
我正在使用MS SQL 2008服務器,但我的compability級別設置爲80(如MSSQL 2000,我無法改變這一點)。所以我覺得我只駕駛一檔法拉利。 );
從第一個查詢返回的數據集有多大,但沒有運行總數?另外什麼是「月」列的數據類型? –
嘗試使用谷歌搜索「sqlserver running sum」 – Andomar
Monht是一個varchar列,但如果datetime使它更快,我會爲它付出。 第一次查詢只返回13行,但原始表有近2MM記錄。我正在使用這個小組來進行一些現金流動。 – vbandrade