0

私は一時テーブルを持っています。それを #invoices と呼びましょう。次のように定義されています。

create table (id int identity(1, 1), billed money, credited money, balance money)

私はそれに次のデータを持っています

Billed   Credited
140.00   
20.00
          60.00
          20.00
         -20.00

実行中の残高で残高列を更新したいと思います。残高列が適切に更新されるようにします。残高は基本的に、請求 - 入金ですが、前の行を考慮する必要があります。

したがって、私の例では、バランスは次のようになります。

Billed   Credited  Balance
140.00              140.00
20.00               160.00
          60.00     100.00
          20.00      80.00
         -20.00    -100.00

行をループして実行中のバランスを維持せずにこれを行う方法はありますか? 基本的に、バランス列をセットベースの方法で更新しようとしています。

4

2 に答える 2

3

SQL Server で実行中の合計を計算するためのセットベースの方法がありますが、SQL Server の現在のバージョンでは、多くの場合、カーソル ベースのソリューションの方が高速です。

Adam Machanic が素晴らしい記事を書いています

于 2009-10-02T03:08:45.587 に答える
-1

答えはトリガーです。私はそれらを使用していますが、美しく機能します。私はあなたのセットアップを正確に持っていません(私が言うには少し奇妙です)が、一般的に、ここでは正しいアプローチです。注文には注意が必要ですが、それ以外は問題ないはずです。

于 2009-10-02T03:10:58.797 に答える