次のクエリで 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
のすべての列を に配置するSELECT
かGROUP 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
?