「達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ」を読んで学習しています。
サンプルファイルの以下のSQLがあったので、ACCESSを使って実行しようとしました。
SELECT CASE pref_name
WHEN '徳島' THEN '四国'
WHEN '香川' THEN '四国'
WHEN '愛媛' THEN '四国'
WHEN '高知' THEN '四国'
WHEN '福岡' THEN '九州'
WHEN '佐賀' THEN '九州'
WHEN '長崎' THEN '九州'
ELSE 'その他' END AS district,
SUM(population)
FROM PopTbl
GROUP BY CASE pref_name
WHEN '徳島' THEN '四国'
WHEN '香川' THEN '四国'
WHEN '愛媛' THEN '四国'
WHEN '高知' THEN '四国'
WHEN '福岡' THEN '九州'
WHEN '佐賀' THEN '九州'
WHEN '長崎' THEN '九州'
ELSE 'その他' END;
WHEN '徳島' THEN '四国'
WHEN '香川' THEN '四国'
WHEN '愛媛' THEN '四国'
WHEN '高知' THEN '四国'
WHEN '福岡' THEN '九州'
WHEN '佐賀' THEN '九州'
WHEN '長崎' THEN '九州'
ELSE 'その他' END AS district,
SUM(population)
FROM PopTbl
GROUP BY CASE pref_name
WHEN '徳島' THEN '四国'
WHEN '香川' THEN '四国'
WHEN '愛媛' THEN '四国'
WHEN '高知' THEN '四国'
WHEN '福岡' THEN '九州'
WHEN '佐賀' THEN '九州'
WHEN '長崎' THEN '九州'
ELSE 'その他' END;
演算子がありませんというエラーが発生します。
ACCESSでCASEが使えないので代わりにSWITCHを使うしかないようです。
以下のように書き換えました。
SELECT SWITCH(
pref_name='徳島','四国',
pref_name='香川','四国',
pref_name='愛媛','四国',
pref_name='高知','四国',
pref_name='福岡','九州',
pref_name='佐賀','九州',
pref_name='長崎','九州',
TRUE,'その他'),
SUM(population)
FROM PopTbl
GROUP BY
SWITCH(
pref_name='徳島','四国',
pref_name='香川','四国',
pref_name='愛媛','四国',
pref_name='高知','四国',
pref_name='福岡','九州',
pref_name='佐賀','九州',
pref_name='長崎','九州',
TRUE,'その他')
pref_name='徳島','四国',
pref_name='香川','四国',
pref_name='愛媛','四国',
pref_name='高知','四国',
pref_name='福岡','九州',
pref_name='佐賀','九州',
pref_name='長崎','九州',
TRUE,'その他'),
SUM(population)
FROM PopTbl
GROUP BY
SWITCH(
pref_name='徳島','四国',
pref_name='香川','四国',
pref_name='愛媛','四国',
pref_name='高知','四国',
pref_name='福岡','九州',
pref_name='佐賀','九州',
pref_name='長崎','九州',
TRUE,'その他')
実行結果です。