2017-05-29 16 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

オフコースリオーダリングは結果セットで行われます。あなたのクエリは2番目のテーブルを使用しています。最初にこれらのローをテンポラリテーブルに転送する必要がありますか? –

関連する問題