目次
ふりかえり

筆者
本記事は、SQLの基本、実務使用例編になります。
SQLの基礎に関しましては、
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
本編に入ります!
case whenとは?
まるで「もし○○なら→××、そうでなければ→△△」というIF文のような使い方ができる構文です。
SQLでは、表形式でデータを出力するときに、条件によって表示内容を切り替えるのに使います。
case whenの基本構文

筆者
まずは、基本構文から見ていきましょう!
case
when 条件1 then 値1
when 条件2 then 値2
else 値3
end
when:条件を指定
then:その条件が true のときに返す値
else:すべての条件に当てはまらないときの値(省略可能)
実務レベルの使用例を見ていこう!

筆者
実際に、SQLを使用してデータを確認していきましょう。
SQLに関しては以下を使用して解説していきます。
create table文、select文、insert文、update文、delete文、
drop table文、につきましては、過去にアップロードした
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
目次の、「ふりかえり」のところにそれぞれの記事のリンクが
貼ってあるよ!
または、サイドバーのカテゴリーにSQLがあるから、そちらからでも
参照できます!
Oracle Live SQLで実行していきます!
今回、実行するSQLの一覧
サンプルテーブル作成
従業員の年齢に応じて「区分(未成年/成人)」を出したいとします。
create table employees (
id number,
name varchar2(50),
age number
);
データ追加
insert into employees values (1, '山田', 17);
insert into employees values (2, '佐藤', 20);
insert into employees values (3, '鈴木', 30);
CASE WHEN を使った SELECT 文
select
id,
name,
age,
case
when age < 20 then '未成年'
when age >= 20 then '成人'
end as 区分
from
employees;

case when は select だけでなく、order by, where, group by でも使えます。
条件は複数指定できます。
else を省略すると、条件に一致しない場合は NULL になります。
「テストの点数に応じて、A/B/C評価をつける」という例で CASE WHEN を使用
条件ルール(例)
| 点数 | 評価 |
|---|---|
| 80点以上 | A |
| 60点以上80点未満 | B |
| 60点未満 | C |
サンプルテーブル作成
create table test_scores (
student_id number,
student_name varchar2(50),
score number
);
データ追加
insert into test_scores values (1, '田中', 85);
insert into test_scores values (2, '中村', 75);
insert into test_scores values (3, '小林', 58);
insert into test_scores values (4, '佐々木', 60);
insert into test_scores values (5, '加藤', 80);
case when を使って評価をつける
select
student_id,
student_name,
score,
case
when score >= 80 then 'A'
when score >= 60 then 'B'
else 'C'
end as 評価
from
test_scores;

ポイント解説
when score >= 80で「80点以上」はAwhen score >= 60は「60点以上80点未満」に対応(80点以上は前で処理されるため)else 'C'で残り(60点未満)を処理
まとめ

筆者
case whenについて解説しました。
次回もお楽しみに!










コメント