【最大10000ポイント】当たる!!質問投稿キャンペーン!

Oracle7で以下のような要求にあうようなSQLは可能でしょうか?
見積データ
データNO 品目 金額
1 ああ 1O
2     いい 11
3     うう 12

受注データ
データNO 品目 金額
2     いい 11
3     ええ 13
4     おお 14
納品データ
データNO 品目 金額
3     かか 15
4     おお 14
5     きき 16
上記のような3つのテーブルがあります。
データNOは、見積データ作成時に連番になり、受注、納品のデータNOはその番号を引き継ぎます。
ところが、受注データからしか発生しないデータもあり、同様に納品データから発生する場合もあります。
(ちゃんと見積もりしてから受注して納品ではなく、いきなり受注したり納品したりする場合があるので)
また、見積時とは明細がことなる場合もあります。
データNOでそれらを追いたいので、この3つの表を以下のような結果にしたいのです。

結果テーブル
データNO 見積品目 見積金額 受注品目 受注金額 納品品目 納品金額
1    ああ    10    
2    いい    11   いい    11   
3    うう    12   ええ    13   かか 15
4              おお    14   おお 14
5                        きき 16

レイアウトや説明がわかりずらいかと思いますが、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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;
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/08 15:20

このQ&Aに関連する人気のQ&A

union C」に関するQ&A: 「末端価格」の意味

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング