• ベストアンサー

oracle 条件分岐について

oracle10gです。 テーブルAから取得した項目aaaが"1"のとき、 テーブルBから項目bbbを取得する それ以外の場合、 テーブルCから項目cccを取得する という内容のSQLを一度に実行したいのですが、 ifやcaseで実行可能でしょうか。 ご教授いただきたいです。 よろしくお願いいたします。

  • Oracle
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • hwoa1024
  • ベストアンサー率36% (122/336)
回答No.1

oracleの環境がないので確認はできないのですが SELECT CASE WHEN table_a.aaa = 1 THEN (SELECT bbb FROM table_b where table_aとの結合条件) ELSE (SELECT ccc FROM table_c where table_aとの結合条件) END FROM table_a のように書けばできそうです。 もしくは SELECT CASE WHEN table_a.aaa = 1 THEN table_b.bbb ELSE table_c.ccc END FROM table_a, table_b, table_c WHERE table_aとtable_bの結合条件 AND table_aとtable_cの結合条件

sanosano86
質問者

お礼

早速のご回答ありがとうございました! 無事selectできました!

その他の回答 (1)

  • urunpa
  • ベストアンサー率0% (0/3)
回答No.2

対象レコード数が多い場合は、hwoa1024さんの例の後者の方が良いのではないかと思います。

sanosano86
質問者

お礼

ありがとうございます。 下の例でやってみます!

関連するQ&A

  • oracle シェル利用

    はじめまして 現在、oracle9iを使い、開発しています。 宜しければご回答の方をお願い致します。 テーブル作成文を記載したCREATE_AAA.sqlがあり 同様のCREATE_BBB.sql,CREATE_CCC.sql,・・・ と複数あり、これを一度のシェルで実行したいと考えています。 どのように行えば、良いのでしょうか。 不明点 ・シェルの文中にどのようにSQLログインすればよいのか?   sqlplus aaa/bbb という記述でOK? ・その後に@AAAの記述でOK? 以上です。 当方、初心者ですが、何卒ご回答の程、よろしくお願い致します。

  • オラクルで

    オラクルのSQLでの質問ですが、 2つのテーブルに同じ名前の列があります。 TEMP1         TEMP2 ----------      ------------- NAME CODE      NAME  NUM aaa   1         ccc   5 bbb   2         ddd   10 この2つのテーブルを検索して、同じ列として表示したいのですが 可能なのでしょうか? NAME ----------- aaa bbb ccc ddd このようにしたいのですが、ビューなどは使ってかまわないのですが 方法がありましたら教えてください。

  • 条件分岐

    <A>aaa... <B>bbb... <C>ccc... と<A><B><C>が繰り返す文章から特定の文字を抽出して、 aaa|bbb|ccc|としたいのですが、まれに<C>がない箇所(<A><Bのみ>)もあり、うまくプログラムが書けません。具体例がだせず分かりにくいとは思いますが、どうかアドバイスよろしくお願いします。

    • ベストアンサー
    • Java
  • ある条件を持たないレコードの抽出

    下記のようなデータがあります。 col1 col2 ========== 001 AAA 001 BBB 001 CCC 002 AAA 002 CCC 003 BBB 003 CCC 004 AAA col2 にBBB を持たないレコードを抽出したいのですが どのようにSQLを記述すればよいかご教授ください。 得たい結果 002 004 どうぞよろしくお願いいたします。

  • oracle テーブルコピー

    はじめまして 現在、oracle9iを使い、開発しています。 宜しければご回答の方をお願い致します。 スキーマAAAにあるテーブルBBBをテーブルデータは不要として スキーマCCCに同じ定義のテーブルBBBをコピー作成したいと考えています。 どのように行えば、良いのでしょうか。 当方、初心者ですが、何卒ご回答の程、よろしくお願い致します。

  • 複数テーブルへの更新、挿入について

    複数テーブルへの更新、挿入について教えてください。 現在2つのテーブルがあり、それぞれのテーブルに対して更新処理をかけています。 その処理を一回のSQLで更新できないものかと考えています。 以下のような二つのテーブルに対して一度にIntoできるものなのでしょうか。 よろしくお願いします。 --Teble1-- No Name Post ID 1 aaa bbb 1 2 aaa bbb 2 3 aaa bbb 3 --Teble2-- NO ID Memo 1 1 ccc 2 1 ccc 3 1 ccc 2 2 ccc 3 2 ccc

  • SQL文 テーブル1つに複数のデータ

    お世話になっております。 SQLでの質問です。 --テーブル---------- F_1 F_2 AAA BBB AAA CCC BBB XXX CCC DDD DDD YYY 1.F_1のAAAを条件にF_2のBBB・CCCを取得し、 F_1のBBB・CCCと、F_2のXXXとDDDを取得します。 2.次に、取得したF_2のXXX・DDDを条件に、F_1のDDD、F_2のYYYを取得します。 これを1つのSQLで実行したいのですが、副問合せを駆使しても、良いSQLが思い浮かびません。 有識者の方、ご享受頂きたいです。 宜しくお願い致します。

  • oracleからSQL Serverへの移行

    oracleからSQL Serverへ移行することになったのですが、副問い合わせで定義したテーブル同士を外部結合するSQL構文が、うまく実現できず、ご教授して頂きたくよろしくお願いします。 下記、oracle 構文をSQL Server構文へ書き換えたい。 select * from (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 >100) aaa, (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 <=100) bbb, tbl3 where aaa.cal1 = bbb.cal1(+) and aaa.cal2 = bbb.cal2(+) and aaa.cal3 = bbb.cal3(+) and aaa.cal1 = tbl3.cal1 よろしくお願いします。

  • 並び替えで教えて下さい。

    並べ替えで悩んでます。ご教授下さい。 下記のようなA、B、Cというフィールドがあり それぞれデータが入っているとします。 取得する際の並び替えですが、 A B C --------------------- aaa 1 6 bbb 1 5 ccc 1 4 aaa 2 4 bbb 2 6 ccc 2 5 ORDER BY Aとすると・・・ aaa 1 6 aaa 2 4 bbb 1 5 bbb 2 6 ccc 1 4 ccc 2 5 ORDER BY Bとすると・・・ aaa 1 6 bbb 1 5 ccc 1 4 aaa 2 4 bbb 2 6 ccc 2 5 ORDER BY Cとすると・・・ aaa 2 4 ccc 1 4 bbb 1 5 ccc 2 5 aaa 1 6 bbb 2 6 となります。 私がやりたいのは下記の順で並べ替えしたいのです。 ccc 1 4 ccc 2 5 bbb 1 5 bbb 2 6 aaa 1 6 aaa 2 4 つまりORDER BY B、Cの結果の1つ目のレコードの AでGROPE BYするような感じです。 方法をご教授頂きたいと思います。 よろしくお願いします。

  • Pro*CでのSQL文について

    こんにちは。 Pro*CでSQLを実行しようとしています。 varchar table_data[200]; (略) EXEC SQL SELECT aaa, bbb, ccc INTO :table_data FROM SAMPLE (略) のようにしてSAMPLEテーブルの列(aaa,bbb,ccc)を変数table_dataに 格納したいと考えています。(もちろん、現在はtable_dataにはaaaの値しか 入っていません(泣)) こういった漢字で変数table_dataに選択列(複数)を取得できるような考えは あるのでしょうか? ちなみにaaa,bbb,cccの区切り文字は考えなくても構いません。 ご多忙でしょうが、どのたかご回答宜しくお願い致します。