電子書籍の厳選無料作品が豊富!

何度も恐縮です。前回の質問(例題)が間違えていました。
本当に申し訳ございません。改めて、お願いしたい次第です。
Oracl[10g]の SQL文について、教えて下さい。

[C1]テーブルに [CODE](key) と [NAME]フィールドがあるとします。
内容は、
A-1 NAME-1
A-2 NAME-2
A-3 NAME-3 と、します。

[B]テーブルに [CODE](key) と [NOUKI](key) と [KIN] フィールドがあるとします。
内容は、
A-1 2005/01/01 100
A-1 2005/01/02 200
A-2 2005/01/01 300
A-2 2005/01/10 400
A-2 2005/12/10 500 と、します。

[C2]テーブルに [CODE2](key) と [NAME2] と [CODE] フィールドがあるとします。
内容は、
AAA NAME2-1 A-1
BBB NAME2-2 A-2
CCC NAME2-3 A-3 と、します。

[C3]テーブルに [CODE2](key) と [NO](key) と [KIN2] フィールドがあるとします。
内容は、
AAA 1 200
AAA 2 300
BBB 1 10
BBB 2 20
BBB 3 30 と、します。

結果が、
A-1 NAME-1 300[B]テーブルの合計 500[C3]テーブルの合計
A-2 NAME-2 1200[B]テーブルの合計 60[C3]テーブルの合計

と、なる様にする為には、どういうSQL文を書けば良いのでしょうか ?

前回、教えて頂いた例を参考に頑張っているのですが、
まだ、私には難しすぎる様です。
よろしくお願い致します。

A 回答 (2件)

SELECT C1.CODE, MAX(C1.NAME) AS NAME, SUM(B.KIN) AS KIN


FROM B, C1
WHERE C1.CODE = B.CODE
GROUP BY C1.CODE



SELECT C2.CODE, SUM(C3.KIN2) AS KIN2
FROM C2, C3
WHERE C2.CODE2 = C3.CODE2
GROUP BY C2.CODE

の結果をCODEで合体させたイメージと考えて、

SELECT B.CODE, B.NAME, B.KIN, C.KIN2
FROM (
SELECT C1.CODE, MAX(C1.NAME) AS NAME, SUM(B.KIN) AS KIN
FROM B, C1
WHERE C1.CODE = B.CODE
GROUP BY C1.CODE
) B, (
SELECT C2.CODE, SUM(C3.KIN2) AS KIN2
FROM C2, C3
WHERE C2.CODE2 = C3.CODE2
GROUP BY C2.CODE
) C
WHERE B.CODE = C.CODE

ではどうでしょうか?
他にもっといい解がありそうな気もしますが。
    • good
    • 0
この回答へのお礼

ありがとうございます。成功致しました。
次の課題も待っているのですが、色々と
今回教えて下さった事を踏まえて
頑張ります。(やっぱり聞くかも・・・)
今後とも、宜しくお願い致します。

お礼日時:2005/06/21 09:46

やっとわかった・・・。


SELECT C1.CODE,
C1.NAME,
B.KIN,
C3.KIN2
FROM C1,
C2,
(SELECT UNIQUE code, SUM(KIN) OVER(PARTITION BY CODE) KIN
FROM B) B,
(SELECT UNIQUE code2,SUM(KIN2) OVER(PARTITION BY CODE2) KIN2
FROM C3) C3
WHERE C1.CODE = C2.CODE
AND C1.CODE = B.CODE
AND c2.CODE2 = C3.CODE2
でいいのかな?
    • good
    • 0
この回答へのお礼

ありがとうございます。成功致しました。
次の課題も待っているのですが、色々と
今回教えて下さった事を踏まえて
頑張ります。(やっぱり聞くかも・・・)
今後とも、宜しくお願い致します。

お礼日時:2005/06/21 09:46

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