2017-01-27 13 views
0

シーケンスを持つテーブルがあり、各アイテムのカウントがあります。私は結果に余分な列を追加するクエリを考え出しています。そのため、新しい列では各行/項目はその項目が項目よりも低いすべての項目の数の合計を持つことになります。SQL条件付きの合計とグループ化

例えば:

items [...] seq counts 
a  [...] 1  1 
b  [...] 2  1 
c  [...] 3  8 
d  [...] 4  2 
a  [...] 1  1 
e  [...] null  1 

結果:

items [...] seq counts sum 
a  [...] 1  1 (doesnt matter, could be 0 or 1) 
b  [...] 2  1  1 
c  [...] 3  8  2 
d  [...] 4  2  10 
a  [...] 1  1 (doesnt matter, could be 0 or 1) 
e  [...] null  1 (doesnt matter) 
f  [...] 5  10 12 

私はこのような状況で何かを合計する方法を知りません。私はグループで行う方法だけを知っていて、グループ内のすべてのアイテムを合計します。サブクエリが私のために働いていません

+0

、どのように第六行 '.. 1 1 'を第六の位置に来ていますか?あなたはそれのためにいくつかの命令を使用していますか?この6番目の行が2番目の行になるとどうなりますか? ur結果は変わるでしょうか? – Utsav

+0

実際には多数の結合を持つ巨大なテーブルなので、繰り返し項目、seq、counts、sumの組み合わせを持つ行があり、[...] columnSには各行をユニークにするものが含まれています。また、テーブルは注文されていません – user1294510

+0

あなたが言及していない条件があります。行1と5 'seq == 1 '(つまり' <2')なぜ行2の 'seq == 2'は' sum == 1'を持っていますか?要件ごとに: "すべてのアイテムの数の合計そのシーケンスがitem_よりも低い "それは' sum == 2 'であるべきである –

答えて

3

あなたは累積合計を探しています。あなたはouter applyを使用してこの操作を行うことができます。

まず
select t.*, t2.sumcounts 
from t outer apply 
    (select sum(t2.counts) as sumcounts 
     from t t2 
     where t2.seq < t.seq 
    ) t2;