微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ORA-00979 不是按表达式分组

如何解决ORA-00979 不是按表达式分组

您必须将 的所有列放在SELECTGROUP BY在其上使用将结果压缩为单个值的函数(如MINMAXSUM)。

一个简单的例子来理解为什么会发生这种情况:假设你有一个这样的数据库

FOO BAR
0   A
0   B

你跑SELECT * FROM table GROUP BY foo。这意味着数据库必须返回单行作为结果,第一列0才能满足,GROUP BY但现在有两个值bar可供选择。你会期待哪个结果 -AB?或者数据库应该返回多于一行,违反合同GROUP BY

解决方法

我通过以下查询得到 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,cf.fact_date,cr.tracking_number
ORDER BY cs.cs_id,cr.full_name;

我在同一个查询中找不到任何同时具有 GROUP BY 和 ORDER BY 子句的示例。我尝试一次从组中删除每个字段,但仍然遇到相同的错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。