Oracle“ORA-00979:不是GROUPBY表达式”解决⽅式
原来oracle⽐其他数据库如mysql的group by语法要求严。之前学习时,⼀直都是使⽤MySQL的,使⽤group by 很随意,然后就这样随意到了oracle上,就报错了…..真是醉了啊。。。
注:在select中出现的列必须全部出现在group by的后⾯
摘录:
groupby是什么函数ORA-00979 不是 GROUP BY 表达式”这个错误,和我前⾯介绍的另外⼀个错误ORA-00937⼀样使很多初学oracle的⼈爱犯的。
我在介绍使⽤聚合函数中⽤group by来分组数据时特别说明了select 列表项中不存在的列可以出现在group by的列表项中,但反过来就不⾏了,在select列表项中出现的列必须全部出现在group by后⾯(聚合函数除外)
但⼀些朋友经常爱把select 列表项的中列忘了写在group by中。于是就出现了以上的错误ORA-00979 不是 GROUP BY 表达式。
Oracle的中⽂错误提⽰信息翻译得⾮常不到位,⾯对着不是 GROUP BY 表达式很多朋友摸不着头脑,不知道oracle在说什么。
例如下⾯的例⼦就会出现这个错误:
SQL> select deptno,job,avg(sal)
2 from emp
3 group by deptno;
select deptno,job,avg(sal)
*
ERROR 位于第 1 ⾏:
ORA-00979: 不是 GROUP BY 表达式
这⾥就是因为在select 列表像中出现了像deptno和job,⽽在group by中并没有出现的缘故。
以上的错误纠正为:
Select deptno,job,avg(sal) from emp
Group by deptno,job;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。