ストアド プロシージャ (私は SQL Server2008 を使用しています) では、次のサンプルのようなビジネスを行っています。
ID City Price Sold
1 A 10 3
1 B 10 5
1 A 10 1
1 B 10 3
1 C 10 5
1 C 10 2
2 A 10 1
2 B 10 6
2 A 10 3
2 B 10 4
2 C 10 3
2 C 10 4
私がやりたいことは次のとおりです。
各 ID で、最初に都市で並べ替えます。
並べ替え後、この ID の各行について、条件付きで上から下に Sold を再計算します: 各 ID の Sold の合計が Price を超えない (以下の結果のように)。
そして、このような結果:
ID City Price Sold_Calculated
1 A 10 3
1 A 10 1
1 B 10 5
1 B 10 1 (the last one equal '1': Total of Sold = Price)
1 C 10 0 (begin from this row, Sold = 0)
1 C 10 0
2 A 10 1
2 A 10 3
2 B 10 6
2 B 10 0 (begin from this row, Sold = 0)
2 C 10 0
2 C 10 0
そして今、私は Cursor を使用してこのタスクを実行しています: 各 ID を取得し、都市を並べ替え、Sold を計算し、一時テーブルに保存します。計算が終了したら、すべての一時テーブルを結合します。しかし、それには長い時間がかかります。
人々がアドバイスしていることは、カーソルを使用しないでください。
では、このタスクを完了するための例を (select form where group を使用して) 教えていただけますか? または、それをすばやく解決する他の方法はありますか?
この作業があなたにとって簡単ではないことは理解していますが、それでもここに投稿します。誰かが私を助けてくれることを願っています.
私はあなたの助けにとても感謝しています.
ありがとう。