2016-11-10 4 views
0

RESULT列を取得するにはどうすればよいですか?sqlのグループ内の次の行の値を追加する方法

P_Key Staff Amt EMI RESULT 
372175 9174 1584 1 1584 
372176 9174 1619 2 3203 
372177 9174 1654 3 4857 
372178 9174 1689 4 6546 
372179 9174 1726 5 8272 
699334 22057 1136 1 1136 
699335 22057 1161 2 2297 
699336 22057 1186 3 3483 
699337 22057 1212 4 4695 
699338 22057 1238 5 5933 
699339 22057 1265 6 7198 
699340 22057 1292 7 8490 
699341 22057 1320 8 9810 
699342 22057 1349 9 11159 
+0

下回ってみますか?より具体的にしてください! – perodriguezl

答えて

3

累積合計が必要なようです。 SQL Server 2008では、1つの方法はapply

select t.*, t2.result 
from t cross apply 
    (select sum(amt) as result 
     from t2 
     where t2.staff = t.staff and t2.emi <= t.emi 
    ) t2; 
-1

です。これを試してください。これは、SQL Server 2012

select sum(Amt) over (partition by EMI order by EMI)as RESULT from Your_table 

で働くか、列の結果の合計が必要なのです

SELECT SUM(Amt) FROM Your_table a, 
Your_table b 
WHERE b.EMI <= a.EMI 
GROUP BY a.EMI 
ORDER BY a.EMI; 
+0

'sum()(パーティションを[]で並び替え)' 2012年以降のバージョンの 'SQL Server 'に適用されます。 2番目のテーブルは、希望の結果を返すことはありません –

+0

私はすでにそれがSQL Server 2012の – mansi

+0

のために動作するが、彼は 'sql server 2008' –

関連する問題