「達人に学ぶSQL徹底指南書」(ミック著)を読んで(ほぼわからなかったので読んだというより眺めた)、最初の章に「CASE式のススメ」があり、「SQLで条件分岐をするためにぜひとも習得しておく必要のある重要かつ便利な技術です」とあった。
よし、ではさっそくやってみようとaccessを開いてCASE式を書こうとしたら「おや?」「むむ?」…おかしい。
ネットで調べてみると「accessではCASE式は使えません。」とある。
がびーん。
代わりに SWITCH を使うとのこと。
例えばTB1テーブルより項目「性別」の値が男だったら1、女だったら2、不明だったら0とクエリで新たな項目「数値性別」で表示したいとき
CASE文では
SELECT CASE 性別 WHEN ‘男’ THEN 1
WHEN ‘女’ THEN 2
ELSE 0 END AS 数値性別
FROM TB1
と書くらしい。
SWITCHでは
SELECT SWITCH( 性別 = ‘男’ , 1,
性別 = ‘女’ , 2,
TRUE, 0 ) AS 数値性別
FROM TB1
IIFと似ているけど、条件分岐が2つ以上複数設定できる。
SWITCH(条件1, 条件1がTRUEの場合の値, 条件2, 条件2がTRUEの場合の値,
条件3, 条件3がTRUEの場合の値, ・・・・・)
最初に書いた条件から順に評価されます。
条件1がTRUEだったら条件1に対応する値を返し、条件2以降はスルーします。
同様に条件1はFALSE、条件2がTRUEだったら条件2に対応する値を返し、条件3以降はスルーします。
CASE分のELSEに該当するものは「条件」のところに TRUE を書いてすべての場合がなんでもかんでもあてはまるようにします。前の条件のすべてに当てはまらなかった場合はTRUE の部分ですべてを受け入れます。
上の例で言うと、項目「性別」が男だったら条件1「男である」が〇、条件1の場合の値「1」を返します。
項目「性別」が女だったら条件1は×、条件2に行って条件2「女である」が〇、条件2の値「2」を返します。
その他の場合条件1は×、条件2×、条件3はなんの判定もせず「TRUE」なので条件3の値「0」を返します。項目「性別」がNULLの場合も0を返してくれました。
そのほかに、コメントってaccessの場合どうやって書くんだろうと検索したところ「accessではコメントは書けません」とのこと。。。
そのほかに、本を見ながら見様見真似でしこしこSQLを書いたのに、クエリを保存して閉じて、また開いたらaccessさんが気を利かせた?全く違うSQL文に変わっている。
一句
SQL accessでやるにはちときつい
やるなら VBAの中でだね
参考としたURL
コメント