CASE式とは?ケースしき
CASE式とは、条件によって返す値を切り替える式。値の一致で分岐する単純CASEと、条件式で分岐する検索CASEの2つの形がある。文ではなく式なので、SELECT句・WHERE句・ORDER BY句・集約関数の引数など、値を書ける場所ならどこにでも置ける。
最終更新:2026-10-06
この語が出る過去問を解く →背景
分岐をアプリケーション側に持ち帰ると、判定に必要な行をすべて転送してから大半を捨てることになり、通信量も処理時間も無駄になる。区分に応じた集計や、業務上の優先順での並べ替えは、値を返す式としてSQLの中で表現できれば1回の問合せで完結する。値の場所ならどこでも置ける仕様は、この使い方を成り立たせるためのものである。
具体例
SUM(CASE WHEN 月=1 THEN 金額 ELSE 0 END) を月ごとに並べれば、行方向の売上を月別の列へ展開できる。ORDER BY CASE 区分 WHEN '至急' THEN 1 ELSE 2 END と書けば、コード順ではなく業務上の優先順に並べられる。
試験での引っ掛け
単純CASEは「=」で比較するため WHEN NULL は決して真にならず、NULLで分岐したいときは検索CASEに IS NULL と書く。ELSEを省略したときの既定値も、0や空文字ではなくNULLになる。
関連用語
出た過去問
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)解説で登場
ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、"会員項目"表で管理することにした。"会員項目"表に対し、次の条件でSQL文を実行して結果を得る場…
正解:MAX
要点:MAXで最新行を選び、CASE式の集約で行を列に展開する
同一の会員番号・項目名の中で最も大きい行番号の行を採用するので、副問合せでは行番号の最大値を求める必要がある。また外側では、条件に合致しない行がNULLになるCASE式を集約して1行にまとめる(いわゆる行から列への転置)ため、NULLを無視して値を拾える集約関数が必要になる。どちらもMAXで満たせる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。