dポイントプレゼントキャンペーン実施中!

【明細データ】と【変換テーブル】で、変換後明細データを作成
して、その結果を集計したいのですが、、、

下記の結果を求めるためにはSQLひとつで可能でしょうか?
※(3)の表まではunionで可能でしたが、unionでは集計はできないですよね。。。。

(1)【明細データ】
CODE VALUE AMOUNT
A 1000 10000
B 2000 20000
C 3000 30000
D 4000 40000
E 1001 10000
F 2001 20000
G 3000 30000
H 4000 40000

(2)【変換テーブル】
VALUE1 VALUE2
1000 1001
2000 2001

(3)【変換後明細データ】
CODE VALUE AMOUNT
A 1001 10000
B 2001 20000
C 3000 30000
D 4000 40000
E 1001 10000
F 2001 20000
G 3000 30000
H 4000 40000

(4)【SQL抽出結果】が欲しい
VALUE AMOUNT
1001 20000
2001 40000
3000 60000
4000 80000

A 回答 (4件)

#1です


やっぱテストしないとダメですね
テーブル作って試しました
select value , sum(amount) from
(select a.CODE CODE,
nvl(b.value2,a.value ) value,
a.AMOUNT AMOUNT
from 明細データ a,
変換テーブル b
where a.value = b.value1(+))
group by value
    • good
    • 0
この回答へのお礼

更に、作ってくださったのですね。
ありがとうございます。

ばっちりでした。
from句に select文を書いて、カラム名称を
つけてあげれば、うまく出来るのですね、勉強になりました。

お礼日時:2007/06/01 13:33

質問者様Oracleの質問で大丈夫ですか?


#Accessでの質問が多いようですが…
試してませんが、これでいけないですか?

SELECT T.VALUE, SUM(T.AMOUNT)
FROM
(SELECT DECODE(B.VALUE2, NULL, A.VALUE, B.VALUE2) VALUE
,A.AMOUNT
FROM 明細データ A LEFT JOIN 変換テーブル B
ON A.VALUE = B.VALUE1
) T
GROUP BY T.VALUE
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

Oracleです。質問にもOracleとつけておけばよかったですね。
お手数をおかけしました。

お礼日時:2007/06/01 13:19

select nvl(Y.VALUE1,X.VALUE) VALUE,sum(AMOUNT) AMOUNT


from 明細データ X,変換テーブル Y
where X.VALUE=Y.VALUE1(+)
group by nvl(Y.VALUE1,X.VALUE);

こんな感じ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

nvl(Y.VALUE1,X.VALUE);が、
nvl(Y.VALUE2,X.VALUE);
でしたが、出来ました。niceです。nvlをGourpByするのですね。
ありがとうございます。

お礼日時:2007/06/01 13:17

これでいけるでしょう


ポイントは3をインラインビューにするだけ

select value , sum(amount)
(select a.CODE CODE,
b.VALUE2 VALUE,
a.AMOUNT AMOUNT
from 明細データ a,
変換テーブル b
where a.value = b.value1)
group by value

この回答への補足

早速の回答ありがとうございます。(Oracleです)
すいません、このまま実行したらダメでした。
sumの後に fromを追加ですか? これも結果はダメでした。

> ポイントは3をインラインビューにするだけ

とは、(select a.CODE CODE,b.VALUE2 VALUE,a.AMOUNT AMOUNT
from 明細データ a,変換テーブル bwhere a.value = b.value1)
の事ですよね。

補足日時:2007/06/01 13:03
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す