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