プログラ生活

プログラム初学者のためのポイントを書いていこうと思います。たまに脇道それた記事もありますが、息抜きだとおもって気長にお付き合いください。

【SQL Server(連載)】CASE式 -17-

www.pon-x.jp

前回の続き

今回は、条件分岐を目的とするCASE式を紹介します。

CASE式

CASE式は、もしデータが、〇〇だったら××、△△だったら□□みたいなかんじに読み替えてあげることを目的とします。
便利なのは、SELECT文をはじめ、UPDATE、DELETE、INSERTなどででも使え、さらにSELECT句、WHERE句、ORDER句、などなどスカラであらわされる部分なら大抵は使えるのが特徴です。

文法はこんな感じ

CASE 
    WHEN [比較元データ] = [比較データ]
    THEN [出力したいデータ]

    WHEN [元データ] = [比較データ]
    THEN [出力したいデータ]

    ・・・

    ELSE [出力したいデータ]
END

もしくは、

CASE 
    [比較元データ] 
    WHEN [比較データ]
    THEN [出力したいデータ]

    WHEN [比較データ]
    THEN [出力したいデータ]

    ・・・

    ELSE [出力したいデータ]
END

ちなみに、ELSEは指定しなくてもよいが、指定しないでどの条件にも当てはまらないと、NULL出力になります。

実践してみる

Person.Personテーブルについて、PersonTypeがEMならAを、GCならBを、それ以外ならCを表示するようにしてみます。
※ 比較しやすいように、PersonTypeカラムも表示して、かつ重複削除しています。

SELECT 
    DISTINCT
    PersonType,
    CASE PersonType
        WHEN 'EM' THEN 'A'
        WHEN 'GC' THEN 'B'
        ELSE 'C'
    END AS TEST_CASE
FROM Person.Person

結果はこんな感じ f:id:hanabusa-snow:20201202101211p:plain







こんなかんじにけっこう多用するCASE式について、次回は使い方の応用を紹介したいと思います。