ORA-00979 式によるグループ化ではありません 質問する

ORA-00979 式によるグループ化ではありません 質問する

次のクエリで ORA-00979 が発生します。

SELECT cr.review_sk, cr.cs_sk, cr.full_name,
tolist(to_char(cf.fact_date, 'mm/dd/yyyy')) "appt",
cs.cs_id, cr.tracking_number
from review cr, cs, fact cf
where cr.cs_sk = cs.cs_sk
and UPPER(cs.cs_id) like '%' || UPPER(i_cs_id) || '%'
and row_delete_date_time is null
and cr.review_sk = cf.review_wk (+)
and cr.fact_type_code (+) = 183050
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number
ORDER BY cs.cs_id, cr.full_name;

同じクエリに GROUP BY 句と ORDER BY 句の両方が含まれる例は見つかりませんでした。グループから各フィールドを 1 つずつ削除してみましたが、それでも同じエラーが発生します。

ベストアンサー1

のすべての列を に配置するSELECTGROUP BY、結果を単一の値 ( MIN、 、MAXなどSUM) に圧縮する関数を使用する必要があります。

なぜこのようなことが起こるのかを理解するための簡単な例: 次のようなデータベースがあると想像してください。

FOO BAR
0   A
0   B

そして を実行しますSELECT * FROM table GROUP BY foo。つまり、0を満たすために、データベースは最初の列を含む単一の行を結果として返す必要がありますGROUP BYが、 の 2 つの値から選択できるようになりましたbar。どちらの結果が期待されますか -Aまたは ですかB? それとも、 の規約に違反して、データベースは複数の行を返す必要がありますかGROUP BY?

おすすめ記事