【SQL】CASE演算子を用いた項目値の変換方法|データベース操作入門

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

サマリー
  • データベースの検索結果に対して、値を変換したい際に用いる「CASE演算子」の使い方を詳しく解説します。
目次

CASE演算子とは|データベース操作

CASE演算子は、SELECT文での検索結果の加工に役立つ演算子であり、条件式に応じて柔軟に列の値を変換することができます。

本記事ではこのCASE演算子を題材とし、SQLとしての具体的な記述方法を解説します。

CASE演算子のSQL基本構文

CASE演算子は、以下2つの記述方法があります。

記述方法(1):値に応じたデータ変換

変換する列が決まっている際に有効な構文です。CASE直後に値を変換したい列名を記載します。加えて、WHEN・・THENをもとにデータ変換条件を指定します。

SELECT [列1, 列2・・・]
    CASE 列1 WHEN 値1 THEN 値1時の返値
             WHEN 値2 THEN 値2時の返値

             ・・・

             WHEN 値N THEN 値N時の返値
             ELSE 初期値
    END  AS [列名]
FROM   [テーブル1]
WHERE  [絞り込み条件]

記述方法(2):条件に応じたデータ変換

不等号を用いた計算条件を用いる等、条件式を細かく設定したい場合に有効な記述方法です。

SELECT [列1, 列2・・・]
    CASE WHEN 条件1 THEN 条件1時の返値
         WHEN 条件2 THEN 条件2時の返値

              ・・・

         WHEN 条件N THEN 条件N時の返値
         ELSE 初期値
    END  AS [列名]
FROM   [テーブル1]
WHERE  [絞り込み条件]

CASE演算子を用いたSQL操作事例

前述で紹介したCASE演算子の基本構文を実例に適用した場合を紹介します。CASE演算子記述方法のイメージを具体化しましょう!

DB事例1|文字列の分類変換

上図のように、会計テーブルの「科目」に着目し、「科目分類」という文字列変換した新たな列を生成したい場合、次のように記述します。

SELECT 科目, 金額
    CASE 科目 WHEN '新幹線' THEN '交通費'
             WHEN '飛行機' THEN '交通費'
             WHEN 'ホテル' THEN '滞在費'
             ELSE '娯楽費'
    END AS 科目分類
FROM   会計

DB事例2|数値条件の分類変換

上図のように、商品売上テーブルの「売上」に着目し、「売上分類」という数値条件に基づく分類変換を行った新たな列を生成したい場合、次のように記述します。

SELECT 商品, 売上
    CASE WHEN 売上>=100000            THEN '黒字_大'
         WHEN 売上<100000 and 売上>=0  THEN '黒字_小'
         WHEN 売上<0 and 売上>=-100000 THEN '赤字_小'
         ELSE '赤字_大'
    END  AS 売上分類
FROM   商品売上

データベース・SQL操作まとめ

当サイトではデータベースの設計ノウハウやSQL操作における基本構文の解説記事を多数配信しています。合わせてご覧ください。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次