SQLでGROUP後の結果を列で効率よく取得する方法を教えてください。(Oracle8.1.7)
現状は下記SQLで列表示していますが、あまり良い方法ではないと思います。別の取得方法があれば教えてください。
○出力したい結果
担当CD1 4月金額 5月金額
担当CD2 4月金額 5月金額
○現状SQL問題点
・一応取得可能ですがこれだと月数分毎回GROUPするので時間が勿体無いと思います。
・T1で4月~5月を範囲でGROUP後、その結果を4月分、5月分と抽出だけしたいのですが可能でしょうか?
・もっと他に効率よい取得方法があれば教えてください。
○現状のSQL内容
(SELECT A.TANTOCD,
T1.KIN1 KINGAKU1,
T2.KIN2 KINGAKU2
FROM
(SELECT YYMM,TANTOCD
FROM TBL
WHERE YYMM >= 200204 AND YYMM <= 200205
GROUP BY YYMM,TANTOCD ) A,
(SELECT YYMM,TANTOCD,SUM(KIN) KIN1
FROM TBL
WHERE YYMM ='200204'
GROUP BY YYMM,TANTOCD) T1,
(SELECT YYMM,TANTOCD,SUM(KIN) KIN2
FROM TBL
WHERE YYMM ='200205'
GROUP BY YYMM,TANTOCD) T2
WHERE A.TANTOCD = T1.TANTOCD(+)
AND A.TANTOCD = T2.TANTOCD(+));
お礼
ありがとう御座いました。 速度もかなり速くなりました。 お礼が遅くなり申し訳ありませんでした。<m(__)m>
補足
早速の回答ありがとうございます。 明日試してみます。<m(__)m>