SQLでのCASE文とスイッチ文の使用方法と例


CASE文の使用方法:

CASE文は、条件に基づいて複数の結果を返すために使用されます。一般的なCASE文の書式は次のとおりです:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
END

例えば、以下のようなテーブルがあるとします:

employeesテーブル:
+----+---------+--------+
| id | name    | salary |
+----+---------+--------+
| 1  | John    | 50000  |
| 2  | Sarah   | 60000  |
| 3  | Michael | 70000  |
+----+---------+--------+

次のクエリは、salary列の値に基づいて従業員の評価を返します:

SELECT name, 
       CASE
           WHEN salary < 60000 THEN 'Low'
           WHEN salary >= 60000 AND salary < 70000 THEN 'Medium'
           ELSE 'High'
       END AS evaluation
FROM employees;

このクエリの結果は次のようになります:

+---------+------------+
| name    | evaluation |
+---------+------------+
| John    | Low        |
| Sarah   | Medium     |
| Michael | High       |
+---------+------------+

スイッチ文の使用方法:

スイッチ文は、複数の値に基づいて異なる結果を返すために使用されます。一般的なスイッチ文の書式は次のとおりです:

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE result
END

例えば、以下のようなテーブルがあるとします:

productsテーブル:
+----+---------+-------+
| id | name    | color |
+----+---------+-------+
| 1  | Apple   | Red   |
| 2  | Banana  | Yellow|
| 3  | Orange  | Orange|
+----+---------+-------+

次のクエリは、color列の値に基づいて果物の分類を返します:

SELECT name, 
       CASE color
           WHEN 'Red' THEN 'Apple'
           WHEN 'Yellow' THEN 'Banana'
           ELSE 'Other'
       END AS classification
FROM products;

このクエリの結果は次のようになります:

+--------+---------------+
| name   | classification|
+--------+---------------+
| Apple  | Apple         |
| Banana | Banana        |
| Orange | Other         |
+--------+---------------+

以上が、SQLでのCASE文とスイッチ文の使用方法と例です。これらの機能を活用することで、柔軟な条件付きのクエリやデータ変換が可能になります。