CASE 句
【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力
【CASE 句】
CASE→カラムの値に応じて異なる結果を返す条件式の記述だよ。
・CASE句を使った条件分岐
書式
SELECT
CASE
WHEN 条件式1 THEN 式1
WHEN 条件式2 THEN 式2
ELSE 式3
END
FROM テーブル名;
例文
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite>
sqlite> .header on
sqlite> .mode column
sqlite>
sqlite> create table test(name text, result integer);
sqlite>
sqlite> insert into test values('Yamada', 85);
sqlite> insert into test values('Kondo', 54);
sqlite> insert into test values('Suzuki', 78);
sqlite> insert into test values('Endou', 98);
sqlite> insert into test values('Honda', 48);
sqlite> insert into test values('Takahashi', 68);
sqlite>
・ CASE 句を使用し result カラムの値に応じて異なる3つのデータを合わせて取得
sqlite> select
...> name, result,
...> case
...> when result > 80 then 'Pass'
...> when result > 60 then 'ReTest'
...> else 'Fail'
...> end as judgment
...> from test;
name result judgment
---------- ---------- ----------
Yamada 85 Pass
Kondo 54 Fail
Suzuki 78 ReTest
Endou 98 Pass
Honda 48 Fail
Takahashi 68 ReTest
sqlite>
・CASE句を使った値のリストとの比較
書式
SELECT
CASE 式
WHEN 値1 THEN 式1
WHEN 値2 THEN 式2
ELSE 式3
END
FROM テーブル名;
例文
テーブル作成
sqlite> create table user(name text, address text);
データ入力
sqlite> insert into user values('A_Electric', 'Tokyo');
sqlite> insert into user values('B_Motor', 'Chiba');
sqlite> insert into user values('C_Mobile', 'Kanagawa');
sqlite> insert into user values('D_Shipping', 'Osaka');
sqlite>
sqlite> select
...> name, address,
...> case address
...> when 'Tokyo' then 'Yamada'
...> when 'Kanagawa' then 'Furuta'
...> when 'Chiba' then 'Yamada'
...> else 'Endo'
...> end as sales
...> from user;
name address sales
---------- ---------- ----------
A_Electric Tokyo Yamada
B_Motor Chiba Yamada
C_Mobile Kanagawa Furuta
D_Shipping Osaka Endo
sqlite>
※コメント投稿者のブログIDはブログ作成者のみに通知されます