前回の続き
前回、CASE式をやりましたが、今回は応用的な事例を紹介します。
並び替えに使う。
ORDER BY で並び替えができるのですが、CASE式をもっておもしろい使い方ができます。
例えば、以下のようにPerson.PersonテーブルをPersonTypeでソートするにはいかのようになります。
SELECT * FROM Person.Person ORDER BY PersonType
このとき、PersonTypeでソートするけれども、データが「IN」のレコードは最優先で上位としたいいったとき、以下のように書けます。
SELECT * FROM Person.Person ORDER BY CASE WHEN PersonType='IN' THEN 0 ELSE 1 END, PersonType
こんなかんじで実装できます。
UPDATEでつかう。
変更するデータにCASE式を用いることができます。
UPDATE Person.Person_Copy SET Suffix = CASE WHEN PersonType='IN' THEN 0 ELSE 1 END
画像だと一部だけですが、確認してみます。
SELECT * FROM Person.Person_Copy
こんかかんじで、スカラ(単一)な値であればまだまだこれ以外も多様な使い道があります。
ぜひ使い方を覚えておきましょう。