用常用的EMP表举例吧~
select deptno,ename,job from emp group by deptno;
ORA-00979: not a GROUP BY expression???
一直没搞明白是为什么~~希望大家可以帮我讲解讲解~O(∩_∩)O谢谢

解决方案 »

  1.   

    select后面的字段要出现在group by 后
    你这写是想得到什么结果?
      

  2.   

    有聚合,才能分组
    例如:
    select deptno,max(ename),max(job) from emp group by deptno

    select deptno,sum(sal) from emp group by deptno
      

  3.   

    如果字段没有作为聚合函数(如:sum,avg等)的参数,则必须出现在group by 后面的分组字段中。
    在ename和job字段上既没有使用聚合函数,也没有将其放入group by 表达式中,所以是错误的,下
    面的使用方式是正确的: 
    select deptno,ename,job,count(*) from emp group by deptno,ame,job;
    select deptno,count(*) from emp group by deptno; 
    select deptno,sum(sal) from emp group by deptno; 
      

  4.   


    如果是分组group by 那么select后面要跟上分组字段或者聚合函数等,你的name,job 既不是分组字段也不是聚合函数,因此报错!
      

  5.   


    你是不是想得到这样的显示效果哦?SQL> break on deptno;
    SQL> select deptno,empno,ename,sal
      2  from emp order by deptno;    DEPTNO      EMPNO ENAME             SAL
    ---------- ---------- ---------- ----------
            10       7782 CLARK            2450
                     7839 KING             5000
                     7934 MILLER           1300
            20       7566 JONES            2975
                     7902 FORD             3000
                     7876 ADAMS            1100
                     7369 SMITH             800
                     7788 SCOTT            3000
            30       7521 WARD             1250
                     7844 TURNER           1500
                     7499 ALLEN            1600
                     7900 JAMES             950
                     7698 BLAKE            2850
                     7654 MARTIN           1250
      

  6.   

    晕 家里没法排版,好乱啊,你自己执行下我的SQL好看看效果
      

  7.   

    哦~这样子的~O(∩_∩)O谢谢大家了~继续学习ing...~~