2017-05-29 131 views
0

我試圖在按升序對列進行排序後,計算SQL Server 2008 R2中列的累積總和。我不能使用rows unbounded preceding或以下版本,因爲它僅適用於SQL Server 2012及更高版本。我用下面的代碼:如何計算SQL Server 2008 R2中列的運行總數?

select 
    sub_code, 
    Roll_no, 
    Total_marks, 
    sum (Total_marks) over (order by Total_marks ASC) as cumulative_Total 
from table 

但我得到一個錯誤:

Incorrect syntax near 'order'

如何解決這個問題?不使用窗口函數將

回答

2

一種選擇使用相關子查詢來計算運行總計:

select 
    t1.sub_code, 
    t1.Roll_no, 
    t1.Total_marks, 
    (select sum(Total_marks) from table t2 
    where t2.Total_marks <= t1.Total_marks) as cumulative_Total 
from table t1 
order by t1.Total_marks 

這是假設你真的想用你的東西訂購總運行試圖總結,即Total_marks

(select sum(Total_marks) from table t2 
where t2.some_col <= t1.some_col) as cumulative_Total 
+0

這讓有點混亂。我只是想重新排序依次遞增total_marks列,然後生成從未使用過相關子查詢累計marks..have新列。 –

+0

數據庫中沒有「重新排序」表格;唯一的順序是您在查詢時指定的順序。你有沒有嘗試我的查詢,如果是的話,你有什麼問題? –

+0

offcourse重新排序將完成結果集..您的查詢使用第二個表。我是否需要先將這些行傳輸到臨時表? –

0

退房阿龍貝特朗的多個選項,包括優點和缺點出色答卷:一般情況下,如果你打算使用不同的列進行訂購,你可以使用下面的相關子查詢。

https://stackoverflow.com/a/11313533/3266499