###質問
集約関数と分析関数を使用した時に、集約関数で集約したい項目が複数のレコードに分かれてしまうことを解決したいです。
・集約関数を使用せず、分析関数とDISTINCT句を使用
・TABLE_A1, TABLE_A2等に分けてそれぞれ集計した結果を結合
↑の二つは試しました。
集約関数と分析関数を併用して実現することは可能でしょうか?
(不可能であれば不可能という回答をいただきたいと思っています。)
ご教示よろしくお願い致します。
###ソースコードとテーブル ※抜粋
SELECT ITEM_ID , SUM(QTY) ← ITEM_ID毎にQTYが集約されてほしい , SUM(QTY) OVER (PARTITION BY PARENT_NO) ← PARENT_NO毎にQTYが集約されてほしい FROM TABLE_A GROUP BY ITEM_ID , QTY , PARENT_NO
TABLE_A
ITEM_ID | QTY | PARENT_NO |
---|---|---|
ITEM1 | 5 | 100 |
ITEM1 | 8 | 100 |
ITEM3 | 3 | 100 |
ITEM1 | 2 | 200 |
ITEM1 | 7 | 200 |
ITEM2 | 1 | 200 |
###出力結果 | ||
ITEM_ID | SUM(QTY) | SUM(QTY) OVER (PARTITION BY PARENT_NO) |
:-- | --: | --: |
ITEM1 | 5 | 16 |
ITEM1 | 8 | 16 |
ITEM3 | 3 | 16 |
ITEM1 | 2 | 10 |
ITEM1 | 7 | 10 |
ITEM2 | 1 | 10 |
###希望する出力結果 | ||
ITEM_ID | ITEM_ID毎のQTY | PARENT_NO毎のQTY |
:-- | --: | --: |
ITEM1 | 13 | 16 |
ITEM3 | 3 | 16 |
ITEM1 | 9 | 10 |
ITEM2 | 1 | 10 |
ITEM_ID=1 の重複が取り除かれた状態
###試したこと
・集約関数を使用せず、分析関数とDISTINCT句を使用
SELECT DISTINCT ITEM_ID , SUM(QTY) OVER (PARTITION BY ITEM_ID) , SUM(QTY) OVER (PARTITION BY PARENT_NO) FROM TABLE_A
↑にすることで希望する出力結果が得られることは確認済
・TABLE_A1, TABLE_A2等に分けてそれぞれ集計した結果を結合
SELECT A1.ITEM_ID ,A1.ITEM_ID毎のQTY ,A2.PARENT_NO毎のQTY FROM ( SELECT ITEM_ID ,PARENT_NO ,SUM(QTY) AS ITEM_ID毎のQTY FROM TABLE_A GROUP_BY ITEM_ID ,PARENT_NO )A1 ,( SELECT PARENT_NO ,SUM(QTY) AS PARENT_NO毎のQTY FROM TABLE_A GROUP_BY PARENT_NO )A2 WHERE A1.PARENT_NO = A2.PARENT_NO
###補足情報
・DBのバージョン:Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
回答3件
あなたの回答
tips
プレビュー