- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の表を一つにしたい)
複数の表を一つにしたい
このQ&Aのポイント
- Oracle7で複数の表を一つに結合するSQLは可能でしょうか?データNO、品目、金額の3つのテーブルがあり、データNOで結果テーブルを作成したい。
- 見積データ、受注データ、納品データの3つのテーブルがあります。データNOは見積データ作成時の連番で、受注や納品のデータNOはその番号を引き継ぎます。レイアウトや説明はわかりづらいかもしれませんが、結果テーブルには見積品目、見積金額、受注品目、受注金額、納品品目、納品金額が含まれます。
- 見積データ、受注データ、納品データの3つの表を一つに結合するためには、Oracle7のSQLを使用することができます。データ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;
お礼
詳しい回答ありがとうございます。 解決しました。