お知らせ
2017年7月13日
ORDER BY句のCASE式
(画像はケースです。)
こんにちは。自称エリート(見習い)です。
先日SQL(Microsoft SQL Server)を書き換える保守案件に対応していたところ、
ORDER BY句でCASE式(条件分岐)を記述しているSQL文を発見しました。
ちょうどソート順を変更しなければならない内容だったので、
CASE式の復習含めてORDER BY句でのCASE式の使い方を学んでみました。
CASE式は単純CASE式と検索CASE式に分類することができます。
例えば以下のような形になります。
単純CASE式
CASE position WHEN "社長" THEN 1 WHEN "部長" THEN 2 WHEN "社員" THEN 3 ELSE 100 END
検索CASE式
CASE WHEN potision = "社長" THEN 1 WHEN potision = "部長" THEN 2 WHEN potision = "社員" THEN 3 ELSE 100 END
社長ならば値1を、社長でも部長でも社員でもなければ値100を充てます。
ELSEは書いておいた方がいいでしょう。
このCASE式ですが、ORDER BY句で使う場面として以下のような場面が考えられます。
・役職を上位から並べたいが先に社員一覧を表示させたい。
結構例えが下手ですがまぁあるかもしれないので気にしないでください(笑)
上記のような条件を満たすSQL文の書き方がこちらになります。
SELECT * FROM employee ORDER BY CASE potision WHEN "社員" THEN 1 WHEN "社長" THEN 2 ELSE 3 END
上記のように書くと、
社員(1)→社長(2)→部長(3)の順にソートされた結果が返ってきます。
今回は以上になりますが、
ORDER BYに関連する内容は以前にも取り上げたように(LIMIT句について)、
使い道はたくさんあるなと感じました。
引き続き自学も兼ねて気付きがあればアップしていきたいと思います。