CASE の使用

CASE 式は複数の条件を評価する場合や、条件を満たす単一の値を返す場合に使用されます。たとえば、CASE 式を使用すると、列の値に応じて代替値を表示することができます。このようなデータ変更は一時的な変更であり、永続的な変更ではありません。

CASE 式は次の要素で構成されます。

  • CASE キーワード。

  • 変換する列の名前。

  • 検索するための式を指定する WHEN 句と、それらの式と置き換える式を指定する THEN 句。

  • 比較操作の評価がいずれも TRUE でなかった場合に返される式を定義するオプションの ELSE 句。

  • END キーワード。

  • CASE 式の別名を定義するオプションの AS 句。

CASE 式は読み取り可能な値と省略語やコードを置き換える際によく使用されます。次の例では、CASE 関数を使って、よりわかりやすくなるように製品ラインのカテゴリ表示を変更しています。

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' THEN 'Road'
         WHEN 'M' THEN 'Mountain'
         WHEN 'T' THEN 'Touring'
         WHEN 'S' THEN 'Other sale items'
         ELSE 'Not for sale'
      END,
   Name
FROM Production.Product
ORDER BY ProductNumber;
GO

もう 1 つの CASE 関数の使用法は、データの分類です。次のクエリは、CASE 関数を使って価格データを分類しています。

USE AdventureWorks2008R2;
GO
SELECT   ProductNumber, Name, "Price Range" = 
      CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END
FROM Production.Product
ORDER BY ProductNumber ;
GO

その他の例については、「CASE (Transact-SQL)」を参照してください。