ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
更新レコードのデータによって、UPDATEする内容を変更する
スポンサード リンク

サンプル表「emp」データ
SQL> select * from emp;

EMP DEP NAME     SALARY
--- --- ---------- ----------
E01 D01 なまえ1    80
E02 D01 なまえ2    150
E03 D02 なまえ3    300


例1) 表「emp」のカラム「salary」が100未満の場合は20%増やし、100以上かつ200以下の場合は30%減らす。
SQL> update emp set salary = (
 2     case
 3      when salary < 100 then
 4       salary * 1.2
 5      when salary >= 100 and salary < 200 then
 6       salary * 0.7
 7      else salary
 8     end
 9    );

3行が更新されました。

SQL> select * from emp;

EMP DEP NAME    SALARY
--- --- ---------- ----------
E01 D01 なまえ1   96
E02 D01 なまえ2   105
E03 D02 なまえ3   300

SQL>


スポンサード リンク


→SELECTの結果をINSERTする
→SELECTの結果から条件により、INSERTするテーブルを振り分ける(INSERT〜WHEN)
→SELECTで取得した値でUPDATEする
→更新レコードのデータによって、UPDATEする内容を変更する
→レコードが存在しなければINSERT、レコードが存在すればUPDATEする(MERGE)
→SELECTで取得した値をキーにDELETEする
→重複したレコードをDELETEする

→SQL(DML2) へ
→忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ