• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の表を一つにしたい)

複数の表を一つにしたい

このQ&Aのポイント
  • Oracle7で複数の表を一つに結合するSQLは可能でしょうか?データNO、品目、金額の3つのテーブルがあり、データNOで結果テーブルを作成したい。
  • 見積データ、受注データ、納品データの3つのテーブルがあります。データNOは見積データ作成時の連番で、受注や納品のデータNOはその番号を引き継ぎます。レイアウトや説明はわかりづらいかもしれませんが、結果テーブルには見積品目、見積金額、受注品目、受注金額、納品品目、納品金額が含まれます。
  • 見積データ、受注データ、納品データの3つの表を一つに結合するためには、Oracle7のSQLを使用することができます。データNOをキーとして、見積品目、見積金額、受注品目、受注金額、納品品目、納品金額を結果テーブルに追加することができます。

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

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

古いオラクルだと、こんな感じで書くのが良いでしょう。 --外部結合による解決 select x.データNO,a.品目,a.金額,b.品目,b.金額,c.品目,c.金額 from 見積 a,受注 b,納品 c, (select データNO from 見積 union select データNO from 受注 union select データNO from 納品) x where x.データNO=a.データNO(+) and x.データNO=b.データNO(+) and x.データNO=c.データNO(+); --外部結合を使わない解決 select データNO, max(decode(K,1,品目,null)),max((decode(k,1,金額)), max(decode(K,2,品目,null)),max((decode(k,2,金額)), max(decode(K,3,品目,null)),max((decode(k,3,金額)) from (select 1 as k,a.* from 見積 a union all select 2 as k,b.* from 受注 b union all select 3 as k,c.* from 納品 c) group by データNO;

kazuo1969
質問者

お礼

詳しい回答ありがとうございます。 解決しました。

関連するQ&A