Oracle Database 11.2と11.1の違いについて
開発の時にはまったのでメモ
Oracle Database 11.2では下記のSQLが実行できるが 11.1ではオラクルエラーが出力されてしまう。テーブル構成は、次のとおりとする。
担当者マスタ
--------------------------------
担当者ID 担当者名
--------------------------------
受注データ
--------------------------------
受注番号 受注担当者ID
--------------------------------
受注担当者が入力した受注データの数とその受注担当者の名前を出力したい時SQLは、こんな感じ。
ORACLE 11.2
SELECT
受注担当者ID,
(SELECT 担当者名
FROM 担当者マスタ
WHERE 受注担当者ID=
担当者マスタ.担当者ID) 担当者名,
SUM(1)
FROM 受注データ
GROUP BY 受注担当者ID
Oracle Database 11.2ではこのSQLを実行することができる。しかし、11.1では
上記のSQLが実行できず。ORACLE エラー GROUP BY の式ではありませんというオラクルエラーが帰ってくる。11.1の場合は、次のように書き直す必要がある。
SELECT T1.受注担当者ID,
(SELECT 担当者名
FROM 担当者マスタ
WHERE 担当者マスタ.担当者ID=
T1.受注担当者ID) 担当者名,
T1.合計
FROM(
SELECT 受注担当者ID,
SUM(1) 合計
FROM 受注データ
GROUP BY 受注担当者ID
)T1