アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQL分についての質問です。(ORACLE10g)

データが
CODE(KEY) CODE2(KEY) LINE(KEY) MONEY
A B 1 100
A C 2 200
A B 3 300
と、します。

結果が
A B 100 400
A B 300 400
A C 200 200

と、したいのです。つまり、MONEYとMONEYの合計が
ほしいのです。
色々と頑張ったのですが、解りません。
宜しくお願い致します。

A 回答 (3件)

合計列を計算するサブクエリーを作成して、元の表と結合すればできそうです。


以下サンプル。
SELECT A.CODE1, A.CODE2, A.MONEY ,B.MONEY_SUM
 FROM "テーブル" A
  , (SELECT CODE1, CODE2, SUM(MONEY) MONEY_SUM FROM "テーブル"
    GROUP BY CODE1, CODE2
    ) B
 WHERE B.CODE1 (+) = A.CODE1
  AND B.CODE2 (+) = A.CODE2
 ORDER BY A.CODE1,A.CODE2,A.LINE

この回答への補足

ありがとうございました。思う結果が得られました。
ただ、実際は、
GROUP BY A.CODE, A.CODE2, A.MONEY ,B.MONEY_SUM
と、する必要があります。これをすると
[GROUP BY の式ではありません]と、エラーになってしまいます。
どうすれば良いのでしょうか?
引き続きお願いできれば、幸いです。宜しくお願い致します。

補足日時:2006/10/26 13:20
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございません。
皆様のお陰で、解決できました。
ありがてうございました。
今後とも、宜しくお願い致します。

お礼日時:2006/11/15 09:45

SELECT


CODE1,CODE2,MONEY,
sum(MONEY) over(partition by CODE1,CODE2)
FROM "テーブル"
ORDER BY CODE1,CODE2
ではどうでしょうか?

この回答への補足

ご回答をありがとうございます。
こう言う方法は、全く知りませんでした。
これで、group by も、付け、成功致しました。
ただ、実際はもっと複雑なので、色々と試してみます。

補足日時:2006/10/28 14:19
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございません。
皆様のお陰で、解決できました。
ありがてうございました。
今後とも、宜しくお願い致します。

お礼日時:2006/11/15 09:47

実際は他にも項目があって、それらを含めたSELECTにするとエラーになるということですよね。



GROUP BYを使った場合、選択項目に指定できるのはGROUP BY で指定した項目か集計関数のみです。
それに反している場合「GROUP BY の式ではありません」エラーになるはずです。
確認してみてください。

この回答への補足

お返事が遅くなり申し訳ございません。

>実際は他にも項目があって、それらを含めたSELECTにするとエラー]
>になるということですよね。
その通りです。他のテーブルも絡んでおり、複雑です。

このやり方では、group by は、出来ないと言う事でしょうか?
何度も、恐縮です。宜しくお願い致します。

補足日時:2006/10/28 14:16
    • good
    • 0
この回答へのお礼

お返事が遅くなり申し訳ございません。
皆様のお陰で、解決できました。
ありがてうございました。
今後とも、宜しくお願い致します。

お礼日時:2006/11/15 09:46

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