質問: accessの「iif」に相当するsql関数(adoでoracleに接続時) access2002からado経由でoracleに接続し、データを取得しようと 思っています。 accessのクエリやexcel関数では、「iif」、「if」で条件分岐が出 来ますが、sqlでこれに相当する関数はありますか? 具体的には、 ・日付a が 2007/08/01 ~ 本日 の間なら、「手配数」フィー ルドの数字を返す ・日付aが それ以外の期間なら、0 を返す というような事をしたいです。 decode関数がif関数と似ているように思いますが、between~and~ や、不等号での分岐が出来ないようなので困っています。 iifやif のように分岐条件を自由に設定できて、入れ子も出来るよ うな関数があれば教えてください。 よろしくお願いいたします!
回答: #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