ORA-00979 not a group by expression(ORA-00979 不是按表达式分组)
问题描述
我通过以下查询获得 ORA-00979:
I am getting ORA-00979 with the following query:
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 子句的任何示例.我尝试一次从组中删除每个字段,但仍然遇到相同的错误.
I couldn't find any examples that had both GROUP BY and ORDER BY clauses in the same query. I tried removing each field from the group by one at a time, but am still getting the same error.
推荐答案
您必须将 SELECT 的所有列放在 GROUP BY 中或使用压缩函数结果为单个值(如 MIN、MAX 或 SUM).
You must put all columns of the SELECT in the GROUP BY or use functions on them which compress the results to a single value (like MIN, MAX or SUM).
一个简单的例子来理解为什么会发生这种情况:想象一下你有一个这样的数据库:
A simple example to understand why this happens: Imagine you have a database like this:
FOO BAR
0 A
0 B
然后你运行SELECT * FROM table GROUP BY foo.这意味着数据库必须返回一行作为结果的第一列 0 来满足 GROUP BY 但现在有两个 bar 值从中选择.您期望哪个结果 - A 或 B?还是数据库应该返回不止一行,违反GROUP BY的约定?
and you run SELECT * FROM table GROUP BY foo. This means the database must return a single row as result with the first column 0 to fulfill the GROUP BY but there are now two values of bar to chose from. Which result would you expect - A or B? Or should the database return more than one row, violating the contract of GROUP BY?
这篇关于ORA-00979 不是按表达式分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:ORA-00979 不是按表达式分组
基础教程推荐
- 在多列上分布任意行 2021-01-01
- mysql选择动态行值作为列名,另一列作为值 2021-01-01
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- oracle区分大小写的原因? 2021-01-01
