SQLプロシジャUPDATE句によるデータセットの条件付き更新

[OS] ALL
[リリース] ALL
[キーワード] Base, SQL, UPDATE clause

[質問]

SQLプロシジャのUPDATE句を利用して、値の更新を行なっています。 条件によって代入する値を変更したいのですが、このような場合に簡潔に記述する方法はないでしょうか。
やはり、UPDATEステートメントを複数行記述するしかないのでしょうか。

[回答]

指定される選択条件が比較的単純であれば、次のサンプルプログラムのような記述で、代入する値を変更できます。 より複雑な条件の場合は、数回に分けてUPDATE句を実行してください。

UPDATE句の構文


   UPDATE 変数名 = CASE
                   WHEN 条件_1 THEN 値_1
                   ...

                   WHEN 条件_n THEN 値_n
                   ELSE             値_m
                   END
          WHERE 抽出条件 ;

プログラム例


   DATA sample;
      INPUT a b;
   DATALINES;
   1 0
   2 0
   3 0
   4 0
   5 0
   ;
   RUN;

   PROC SQL ;
      UPDATE sample
      SET B = CASE
              WHEN a = 1 THEN 1
              WHEN a in (2, 3) THEN a * 2
              ELSE 1
              END
      WHERE a <= 4 ;
   QUIT;