0

次の CASE-WHEN ロジックを使用してテーブルを更新したいと考えています。

UPDATE    table1
SET   Volume_eur =              
        CASE    


            WHEN TradeCode = 'A' THEN PaymentAmount_field1
            WHEN TradeCode = 'B' THEN PaymentAmount_field2
            WHEN TradeCode = 'C' THEN PaymentAmount_field3

             END                      

                  * CurrencyRate/100

FROM table1

しかし、どのロジックが使用されたかを文書化し、それを Statusfield にスタンプしたいと考えています。したがって、基本的には、次のように CASE-WHEN 文内で update-statement を実行したいと考えています: (太字でマーク)

UPDATE    table1
SET              Volume_eur = 

            CASE    


            WHEN TradeCode = 'A' THEN PaymentAmount_field1  



UPDATE table1 SET StatusField = 'Logic1'

            WHEN TradeCode = 'B' THEN PaymentAmount_field2



UPDATE table1 SET StatusField = 'Logic2'

            WHEN TradeCode = 'C' THEN PaymentAmount_field3



UPDATE table1 SET StatusField = 'Logic3'

             END                      

                  * CurrencyRate/100

  FROM table1

それは可能ですか、それともどうすればいいですか?CASE-WHEN ロジック全体をコピーするのは避けたいと思います。これを維持するのが難しくなるからです。

4

1 に答える 1

1

case ステートメントを使用したくない場合は、次のように、コンテンツが異なる 3 つの個別のクエリを作成します。

UPDATE    table1 set Volume_eur=PaymentAmount * CurrencyRate/100_field1 
where TradeCode = 'A';    

UPDATE    table1 set Volume_eur=PaymentAmount * CurrencyRate/100_field2 
where TradeCode = 'B';

UPDATE    table1 set Volume_eur=PaymentAmount * CurrencyRate/100_field3 
where TradeCode = 'C';

これがあなたを助けてくれることを願っています!!

于 2012-11-23T10:13:16.893 に答える