1. ホーム
  2. sql

[解決済み] ORA-00979 式によるグループではない

2022-03-04 07:30:49

質問

以下のクエリで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 節の両方がある例を見つけることができませんでした。 GROUP BYから各フィールドを1つずつ削除してみましたが、まだ同じエラーが発生しています。

どうすればいいですか?

のすべてのカラムを配置する必要があります。 SELECT の中に GROUP BY または、結果を単一の値に圧縮するような関数を使用します (たとえば MIN , MAX または SUM ).

なぜこのようなことが起こるのかを理解するために、簡単な例を挙げます。このようなデータベースがあるとします。

FOO BAR
0   A
0   B

を実行し SELECT * FROM table GROUP BY foo . これは、データベースが1つの行を結果として返すことを意味し、最初のカラムは 0 を満たすために GROUP BY の値が2つになってしまいましたが bar を選択することができます。あなたはどちらの結果を期待しますか? A または B ? それとも、データベースは複数の行を返すべきなのでしょうか? GROUP BY ?