こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

unionの結果は集計はできないですよね。。。。

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

下記の結果を求めるためには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

投稿日時 - 2007-06-01 11:48:01

QNo.3047768

すぐに回答ほしいです

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

#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

投稿日時 - 2007-06-01 13:22:50

お礼

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

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

投稿日時 - 2007-06-01 13:33:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

質問者様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

投稿日時 - 2007-06-01 12:57:52

お礼

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

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

投稿日時 - 2007-06-01 13:19:32

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);

こんな感じ。

投稿日時 - 2007-06-01 12:41:13

お礼

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

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

投稿日時 - 2007-06-01 13:17:42

ANo.1

これでいけるでしょう
ポイントは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

投稿日時 - 2007-06-01 11:54:20

補足

早速の回答ありがとうございます。(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:29

あなたにオススメの質問