当前位置: 代码迷 >> Oracle认证考试 >> 这是否9I和10G的差别
  详细解决方案

这是否9I和10G的差别

热度:8148   发布时间:2013-02-26 00:00:00.0
这是不是9I和10G的差别?
本帖最后由 delphisanding1 于 2011-05-11 15:44:40 编辑
我在看韩顺平的玩转ORACLE

里面说到这条语句:
select avg(sal),deptno from emp group by deptno

  AVG(SAL) DEPTNO
---------- ------
1566.66666     30
      2175     20
2916.66666     10

韩老师说,group by 语句后的字段,一定要在选择列里面出现,也就是说deptno一定要在select后出现,否则要出错。

但是我在我本机上查询:
select avg(sal) from emp group by deptno;

  AVG(SAL)
----------
1566.66666
      2175
2916.66666

发现这也是可以的,没有报错,只是部门那一列不显示而已。

这个是不是9i和10G的一个区别?他讲的是9i,我用的是10G。
------解决方案--------------------------------------------------------
1、9i和10g在这一点上没区别。
2、应该是你说反了吧,应该是:选择列里面出现的字段(除了使用聚合函数的字段),一定要在group by语句后出现。

------解决方案--------------------------------------------------------
不在组函数中的列或表达式都必须包含在group by子句中
  相关解决方案