• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessの「IIF」に相当するSQL関数(ADOでOracleに接続時))

ADOでOracleに接続する際に相当するSQL関数

このQ&Aのポイント
  • Access2002からADO経由でOracleに接続し、データを取得する方法について説明します。
  • SQLで条件分岐する際に、「IIF」や「IF」に相当する関数が存在するかどうかについて質問しています。
  • DECODE関数はIF関数に似ていますが、Between~And~や不等号での分岐ができないため、他の関数の存在を求めています。

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

  • ベストアンサー
回答No.2

#1回答者です。 CASE式は、Oracle8iでサポートされているようです。 >SELECT (case when [T$QTY] > 100 then [T$QTY] else 0 end as 数量) FROM T_Sample A そうですね。 select case when 列名1>100 then 列名2 else 0 end as 名前 from 表名 といった指定が可能です。 ()は、この場合、必要ありません。指定しても文法エラーにはならないでしょうけどね。 []は、$という特殊記号を使っているから、指定しているのでしょうか?[]は、ACCESSやSQL Serverなど、マイクロソフトの独自仕様だと承知しています。Oracleや標準SQLの場合は、「"」で囲みます。 <CASE式のマニュアル記載> http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_v1/server.102/B19201-01/expressions.html#2100

sabi0303
質問者

お礼

教えていただいた例文を元にSQLを作ってみて動作確認出来ました! Access/Excel関連書籍で扱っているSQLは基本的な構文の説明しか 書かれていないので、「Case」が使える事を知りませんでした。 (OracleやSQL Server上でしかそういう複雑な事は出来ないと思っ ていました) Case関数の使い方が分かって、今後の業務の幅も広がると思います。 本当にありがとうございました。

その他の回答 (1)

回答No.1

Oracleのバージョンは? 比較的最近のバージョンなら、CASE式がサポートされているはずです。 case when 条件 then 手配数 else 0 end [as 別名] といった構文で、条件には範囲条件などを指定できます。

sabi0303
質問者

補足

ご回答ありがとうございます。 OracleはAccess経由でしか接続できないので詳しい事は分からない のですが、「ORA92」というアプリケーションが入っているので、 おそらく Oracle9i ではないかと思います。 Case式は、Select句の所で使えば良いでしょうか。 例えば「T$QTY」が100以下の場合は0を返すというSQLを作りたい 場合、  SELECT (case when [T$QTY] > 100 then [T$QTY] else 0 end as 数量) FROM T_Sample A という感じでよろしいでしょうか? OracleやSQL ServerのSQLと、Access/Excel経由で使うSQLとでは 微妙に違うようで、ネットでもなかなか情報が見つからなくて困 っています。 よろしくお願いいたします。

関連するQ&A