ホームページ > データベース > mysql チュートリアル > SQL クエリで ORA-00979 エラーが発生するのはなぜですか? それを修正するにはどうすればよいですか?

SQL クエリで ORA-00979 エラーが発生するのはなぜですか? それを修正するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-24 04:47:10
オリジナル
373 人が閲覧しました

Why Does My SQL Query Result in an ORA-00979 Error, and How Can I Fix It?

ORA-00979 のトラブルシューティング: 一般的な SQL GROUP BY の問題

SQL の GROUP BY 句を使用しているときに、恐ろしい ORA-00979 エラーが頻繁に発生します。 このエラーは、選択された列とグループ化された列の間に不一致があることを示します。 具体的には、SELECT ステートメントに GROUP BY 句に存在しない列が含まれている場合、またはグループ化されていない列に非集計関数が適用されている場合に発生します。

問題のあるクエリを調べてみましょう:

<code class="language-sql">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;</code>
ログイン後にコピー

句が不完全であるため、このクエリは ORA-00979 をトリガーします。 これを修正するには、GROUP BY リストの すべて 個の非集計列を SELECT 句に含めるか、集計関数 (GROUP BYCOUNTSUM、、MIN) を明示的にグループ化されていない列に追加します。MAX AVG修正版は次のとおりです:

重要な変更点は、
<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cr.full_name,
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, cr.full_name, cs.cs_id
ORDER BY cs.cs_id, cr.full_name;</code>
ログイン後にコピー
句に

cr.full_name を追加することです。 あるいは、cs.cs_idGROUP BY の集計結果のみが必要な場合は、cr.full_name ステートメントで適切な集計関数を使用する必要があります。 cs.cs_id リスト内のすべての列が集計されるか、SELECT 句に含まれるようにすることで、ORA-00979 エラーが解消されます。 SELECT 関数は集計関数ではないため、この関数を削除すると問題の解決にも役立ちます。GROUP BY

以上がSQL クエリで ORA-00979 エラーが発生するのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート