![見出し画像](https://assets.st-note.com/production/uploads/images/111254392/rectangle_large_type_2_024a6edf672c444a7158528f7473f9d4.png?width=1200)
Photo by
t_and_s_coach
SQLの「CASE文」 - 条件に応じて結果をわける
SQLのCASE文は、特定の条件を評価し、条件に応じた結果を返すことができます。
一般的なCASE文の構文
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE else_result
END
WHEN: 条件式を指定。この条件式が真である場合、その次に指定された結果が返されます。
THEN: 条件が真である場合に返される結果
ELSE: すべての条件が偽の場合に返されるデフォルトの結果
END: CASE文の終了
CASE文を使用したクエリの例
以下のテーブルをサンプルとして使います。
![](https://assets.st-note.com/img/1689835332496-CfWdrqZ1sh.png?width=1200)
例1:商品の在庫状況に応じた注文可否
SELECT
product_name,
stock_quantity,
CASE
WHEN stock_quantity > 0 THEN '注文可'
ELSE '在庫切れ'
END AS order_status
FROM
products;
抽出結果は以下になります。
![](https://assets.st-note.com/img/1689835470746-kl7hOAQ3k8.png?width=1200)
例2:商品カテゴリに応じたセール対象判断
SELECT
product_name
, category
, CASE
WHEN category = 'Electronics'
THEN 'セール対象'
WHENcategory = 'Clothing'
THEN 'セール対象'
ELSE '通常価格'
END AS sale_status
FROM
products;
抽出結果は以下になります。
![](https://assets.st-note.com/img/1689835654538-eGg5RAs6x1.png?width=1200)
例3:商品名の長さに応じたカテゴリ分類
商品名の長さに応じて商品カテゴリを分類するクエリを作成します。
SELECT
product_name
, CASE
WHEN LENGTH(product_name) <= 5
THEN '短めの商品'
WHEN LENGTH(product_name) <= 10
THEN '普通の商品'
ELSE '長めの商品'
END AS category_class
FROM
products;
抽出結果は以下になります。
![](https://assets.st-note.com/img/1689835812596-W5CUqBgcNm.png?width=1200)