2016-06-24 3 views
0

スクリプトは、テスト目的で更新スクリプトを生成します。私は必要なものをこのステートメントで同じSELECT文または複合単純計算の設定と取得

は、

SELECT 'Update script', @PreviousBalance = @PreviousBalance - @CorrectPrice 
FROM table 
WHERE column = @Value 
  1. のようなもの**ここでは、論理の順序

  2. である私は、アカウントの元のバランスに

  3. を持って引きます取引量

  4. (遺伝子率)

**取引金額と新しいバランス

ストア古いバランスなどの新しいバランスを挿入しますがA SELECT statement that assigns a value to a variable must not be combined with data-retrieval operations.' "ので、私はラインでこれを行うには、いくつかのotherwayを必要としています。私の仕事は、いくつかの初期値を反復し、トランザクションログを更新することです。だから毎回@CorrectPrice@PreviousBalanceから減算する必要があります。

アイデア?

実際のクエリ:私は問題を理解している場合

SELECT 'UPDATE table 
      SET Amount = ' + CAST(@CorrectPrice as nvarchar(50)) + 
      ', SET CurrentValueUsed = ' + CAST((@PreviousBalance - @CorrectPrice) as nvarchar(50)) + ' 
      WHERE UsageId = ' + CAST(UsageId as nvarchar(50)) as 'UpdateQueriesToRun' 
     FROM table 
     WHERE ContractId = @ContractID AND 
      DateActive IN (SELECT DateActive 
       FROM table 
       WHERE ContractId = @ContractID) 
     ORDER BY DateActive ASC 
+0

私はそれ以上の説明が必要です。私は従わない。 – nanthil

+0

質問に表示されているように、SELECTステートメントを使用してUPDATEクエリを収集する必要がありますか?収集する代わりに、すぐにUPDATEクエリを起動できますか? – miroxlav

+0

私は本当に問題になるかもしれませんが、私は自分がしなければならない数学をどうやって行うのですか?私はちょうど私が得ている値を知りたいので、私はこのハックのテストと一緒に来た。 @PreviousBalanceインラインを変更するにはどうすればよいですか? – nanthil

答えて

0

は、あなたの更新の前の値を更新し、保存しなければなりませんでした。

これが正しい場合は、キーフィールドフィールド、日付時刻フィールド(値を更新するときに設定する)、前の残高値のフィールド、新しい残高値のフィールドを含むログテーブルを作成できます。

次に、更新しているテーブルに更新トリガを作成し、変更する値をログテーブルに書き込むことができます。

このソリューションがお役に立てば幸いです!