2016-07-06 18 views
0

私は以下のようなテーブルを持っています。SQL Server 2008 R2の実行合計

row_noおよびproductはPKである。

+--------+---------+-------+-----+---------------+---------+ 
| row_no | Product | value | qoh | prev_week_qty | cum_qty | 
+--------+---------+-------+-----+---------------+---------+ 
| 1  | pr:1 | 101 | 101 | NULL   | NULL | 
| 2  | pr:1 | 201 | 101 | NULL   | 100  | 
| 3  | pr:1 | 101 | 101 | NULL   | NULL | 
| 4  | pr:1 | 101 | 101 | NULL   | NULL | 
| 5  | pr:1 | 183 | 101 | NULL   | -18  | 
| 6  | pr:1 | 101 | 101 | NULL   | NULL | 
| 7  | pr:1 | 101 | 101 | NULL   | NULL | 
| 8  | pr:1 | 149 | 101 | NULL   | -34  | 
| 9  | pr:1 | 131 | 101 | NULL   | -18  | 
| 10  | pr:1 | 101 | 101 | NULL   | NULL | 
| 11  | pr:1 | 113 | 101 | NULL   | -18  | 
| 12  | pr:1 | 101 | 101 | NULL   | NUll | 
| 13  | pr:1 | 101 | 101 | NULL   | NUll | 
| 14  | pr:1 | 101 | 101 | NULL   | NUll | 
| 17  | pr:1 | 101 | 101 | NULL   | NULL | 
+--------+---------+-------+-----+---------------+---------+ 

これを実装する方法はありますか?

ロジック:EXについて値= QOH + cum_qty + prev_week_qty

:row_no = 1について

  • 、値= QOH + prev_week_qty + cum_qty。
  • row_no = 2、QOH =(row_no = 1.value)、次いでQOH + prev_week_qty + cum_qty
  • row_no = 3、QOH =(row_no = 2.value)、次いでQOH + prev_week_qty + cum_qty

予想される出力:

+--------+---------+-------+-----+---------------+---------+ 
| row_no | Product | value | qoh | prev_week_qty | cum_qty | 
+--------+---------+-------+-----+---------------+---------+ 
| 1  | pr:1 | 101 | 101 | NULL   | NULL | 
| 2  | pr:1 | 201 | 101 | NULL   | 100  | 
| 3  | pr:1 | 201 | 101 | NULL   | NULL | 
| 4  | pr:1 | 201 | 101 | NULL   | NULL | 
| 5  | pr:1 | 183 | 101 | NULL   | -18  | 
| 6  | pr:1 | 183 | 101 | NULL   | NULL | 
| 7  | pr:1 | 183 | 101 | NULL   | NULL | 
| 8  | pr:1 | 149 | 101 | NULL   | -34  | 
| 9  | pr:1 | 131 | 101 | NULL   | -18  | 
| 10  | pr:1 | 131 | 101 | NULL   | NULL | 
| 11  | pr:1 | 113 | 101 | NULL   | -18  | 
| 12  | pr:1 | 113 | 101 | NULL   | NUll | 
| 13  | pr:1 | 113 | 101 | NULL   | NUll | 
| 14  | pr:1 | 113 | 101 | NULL   | NUll | 
| 17  | pr:1 | 101 | 101 | NULL   | NULL | 
+--------+---------+-------+-----+---------------+---------+ 

私は、SQL Server 2008 R2を使用しています。

+0

「値」列を計算するロジックを取得しませんでした。 –

+0

@Prdpロジックを編集しました。 –

答えて

1

SQL SERVER 2012+SUM()OVER(ORDER BY)トリックは、残念ながら古いバージョンを使用しています。このようなものを試してみてください

SELECT * 
FROM Yourtable A 
     CROSS apply (SELECT Sum(Isnull([cum_qty], 0) 
           + Isnull(prev_week_qty, 0) + CASE WHEN row_no = 1 THEN qoh ELSE 0 END) su 
        FROM Yourtable B 
        WHERE a.[row_no] >= b.[row_no]) cs 
+0

まさに私が探していたものです。ありがとう@Prdp –

関連する問題