• ベストアンサー

ACCESS2000でのCASE文

SQL Server でいう SELECT CASE ○○ WHEN ▲▲ THEN ××, WHEN ▲▲ THEN ×× といったSQLをACCESS2000のSQLにするとき どういったSQLを使えばいいでしょうか? 調べたところ2つのパターンまでなら IIF関数で間に合うようですが、複数になったときに 困っています。 どなたか回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

Switch 関数を使ってください。

関連するQ&A

  • CASE文について

    <環境> SQLSERVER2005 ACCESS2007 CASE文について質問です。 クエリで下記のSQL文を実行すると、「Case 式は、10 レベルまでしか入れ子にできません。」 とエラーになります。 このような場合、どのように記述すれば解決できるでしょうか? ご教授お願いします。 SELECT CASE WHEN (WA.MM = '01') THEN ROUND(SUM(WB.MONEY1), -3, 0) ELSE CASE WHEN (WA.MM = '02') THEN ROUND(SUM(WB.MONEY2), -3, 0) ELSE CASE WHEN (WA.MM = '03') THEN ROUND(SUM(WB.MONEY3), -3, 0) ELSE CASE WHEN (WA.MM = '04') THEN ROUND(SUM(WB.MONEY4), -3, 0) ELSE CASE WHEN (WA.MM = '05') THEN ROUND(SUM(WB.MONEY5), -3, 0) ELSE CASE WHEN (WA.MM = '06') THEN ROUND(SUM(WB.MONEY6), -3, 0) ELSE CASE WHEN (WA.MM = '07') THEN ROUND(SUM(WB.MONEY7), -3, 0) ELSE CASE WHEN (WA.MM = '08') THEN ROUND(SUM(WB.MONEY8), -3, 0) ELSE CASE WHEN (WA.MM = '09') THEN ROUND(SUM(WB.MONEY9), -3, 0) ELSE CASE WHEN (WA.MM = '10') THEN ROUND(SUM(WB.MONEY10), -3, 0) ELSE CASE WHEN (WA.MM = '11') THEN ROUND(SUM(WB.MONEY11), -3, 0) ELSE CASE WHEN (WA.MM = '12') THEN ROUND(SUM(WB.MONEY12), -3, 0) END END AS MONEY FROM (WA INNER JOIN WB ON (WA.YYYY = WB.YYYY)) INNER JOIN WC ON (WA.YYYY = WC.YYYY)

  • SQL CASE 文について

    開発環境 SQLSERVER VB2005 SQLのCASE文についての質問ですが、DATE型のデータが有効値の場合は”スペース”それ以外の場合は格納されているDATE型を表示したいのですが、どなたかご教授お願いいたします。下記のSQLでは全ての日付が出てしまいます。 SELECT CASE 日付 WHEN '2000/01/01' THEN ' '     ELSE 日付          END AS Expr1 FROM  テーブル CASE文以外でもできますか? よろしくお願いいたします。

  • SQL-SELECT文でのソート

    VB2010とmdb(Ms-Access)にてシステムを構築しています。 Select文にて取得したレコードをDatagridviewにて表示しようとしているのですが SQL="SELECT * FROM table ORDER BY ID" 当のシンプルなものだと表示できるのですが 特定の文字列順にソートしたくCASE WHENを使用して SQL = "SELECT * FROM table ORDER BY CASE BUPPIN WHEN '○○' THEN 1 WHEN '△△' THEN 2 ELSE 0 END" のようにSQLを書いてみたのですがデータアタプタにてデータテーブルに結果を入力させる際にエラーが出てしまいます。 構文間違いでしょうか? ご教授お願いします

  • AccessのクエリをSqlサーバーのクエリへ変換

    Accessで書かれたクエリをSqlサーバーのクエリに変換したいと考えているのですが そのクエリは膨大な行数ある上にIIF関数やSwitch関数がそこら中に含まれており、一つ一つ置換していられません。 もしどなたかIIF関数などのAccessのクエリをSqlサーバーのクエリへ変換してくれるソフトをご存知の方いらっしゃいましたら教えていただければ幸いです。 よろしくお願いいたします。 ◆バージョン SQL Server:SQL Server 2008 R2 ACCESS:ACCESS2000 OS:Windows7

  • CASE文での問い合わせ

    下記のSQLでWHEREでnow_tが存在しないとでてSQLを実行できません。 どのようにしたらnow_tをWHEREで判定できるでしょうか。 WHEREが先に実行される為に存在しないというエラーがでるのは わかるんですが、でないようになんとかできないでしょうか? SELECT CASE WHEN s = 1 THEN 1 ELSE 2 END AS now_t FROM test WHERE now_t = 1

  • CASE文のエラーについて

    下記のように打つと「行1でエラーが発生しました。: ORA-00905: キーワードがありません」というエラーが表示されます。どうすればいいでしょうか? SELECT ENAME AS 名前, SAL AS 給与, CASE SAL WHEN SAL <= 1100 THEN SAL * 1.055 WHEN SAL <=1400 THEN SAL * 1.05 WHEN SAL <=3000 THEN SAL * 1.0 ELSE SAL*1.045 AS 昇給率 FROM EMP;

  • case構文の条件について

    cseで ------------------------------- SELECT a,b, CASE c WHEN 1 THEN "○" WHEN 0 THEN "×" END from A ; ------------------------------- というSQL文を実行すると カラムa,bには値が入っていますが カラムcは空欄になってしまいます。 CASE構文のところを、 ------------------------------- CASE c WHEN 1 THEN 1 WHEN 0 THEN "×" END ------------------------------- とするとカラムcの取得結果は、 1 × になります。 どうやら、THENを両方全角文字にすると空欄に なるようです。 ちなみにカラムcは"tinyint(1)"です。 "varchar(10)"にしても取得結果は 同じになってしまいます。 なぜこうなるのか、また、 どうやったら"○×"に限らず全角文字を 条件に出来るか教えてください。

  • ストアド CASE文

    ストアドを作成しているのですが現在ある条件によりJOINを行うテーブルを変更したのですがやり方がわからなくて困っています。 申し訳ございませんが教えて頂きたいです。 下記のようにソースを書いておりますがコンパイルエラーとなります。 SELECT ・・FROM [TableA] CASE WHEN [xxxx].item_kb = 1 THEN LEFT JOIN [TableB] ON・・・・・ CASE WHEN [xxxx].item_kb = 2 THEN LEFT JOIN [TableC] ON・・・・・ 結合条件にCASE文は使用できないのでしょうか?

  • CASE文のきじゅつについて

    帳票フォームである明細を照会する画面を作成しています。 そこで、詳細のテキストボックスにデータの値が 1の場合"○" 2の場合"×" 3の場合"☆" と表示したいのですが、テキストボックスのコントロールソースに1行で書く場合、 どのように書けばいいのでしょうか? IF文だと下記の場合、BBB=IIF(AAA="1","○","×")と書けますよね。 IF AAA="1" then BBB="○" ELSE BBB="×" END IF SELECT文だと下記の場合、1行で書くことができますか? SELECT CASE AAA CASE "1" BBB="○" CASE "2" BBB="×" CASE "3" BBB="☆" END SELECT

  • SQLServer2005のSELECT文作成について

    SQLServer2005初心者ですが、おわかりになる方いらっしゃいましたら、教えてください。お願いします。 やりたいことは(下記は間違いのSELECT文ですが) SELECT Nomber , SUM(ISNULL(CASE WHEN KenYY + KenMM = '200711' THEN Siyoryo ELSE 0 END, 0)) AS '2007年11月' , SUM(ISNULL(CASE WHEN KenYY + KenMM = '200712' THEN Siyoryo ELSE 0 END, 0)) AS '2007年12月' ,  MAX(ISNULL(CASE WHEN RecNO = MIN(RecNO) THEN Sedai ELSE '' END, '')) Sedai_MIN ,  MAX(ISNULL(CASE WHEN RecNO = MAX(RecNO) THEN Sedai ELSE '' END, '')) Sedai_MAX FROM TABLE GROUP BY Nomber で、SELECTの最後のSedai_MIN,Sedai_MAXで集計関数を2回使っているので、エラーがでるのは分かるのですが、始めのMAXを消すとGROUPBY句にSedaiとRecNOが含まれていないというエラーがでて、GROUPBYに追加すると、同じNomberが複数でてしまうのです。 同じNomberは1つしか出ないようにする場合、上記のSELECT文をどのように変更すればよろしいのでしょうか? 回答よろしくお願いいたします。