Engineer Blog開発者ブログ

2017.7.13

ORDER BY句のCASE式

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句について)、
使い道はたくさんあるなと感じました。

 

引き続き自学も兼ねて気付きがあればアップしていきたいと思います。

Contact
お問い合わせ

電話番号0120 - 889 - 236
受付時間:平日 9:00-18:00