本帖最后由 Wuaner 于 2009-11-30 21:16:58 编辑

解决方案 »

  1.   

    因为你的order by里面有其他列。
      

  2.   

    select A.colA,A.colB,sum(A.colC) 
    from A 
    group by A.colA,A.colB 
    order by A.colA,A.colD 
    order by中有group by以外的列
      

  3.   

    select A.colA,A.colB,sum(A.colC) 
    from A 
    group by A.colA,A.colB 
    order by A.colA,A.colB
    这样应该没有问题了。
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  4.   

    1 当用到组函数时,出现在select列表中的字段,如果没有在组函数中,那么必须出现在group by子句中!
     回答:必须出现在group by子句中,组函数的计算条件是以group by的字段为基准
    2 如果在select列表项中除了包含组函数外,还包含了表的某些列,那么你将必须使用group by语句。
    回答:必须使用group by
      

  5.   

    如果同时有GROUP BY 和ORDER BY
    则ORDERY BY必须是SELECT里出现的列(包括聚合函数产生的列)
    如果单ORDER BY
    则可以SELECT的列与ORDERY BY里的不一致,前提是表里必须有这列
      

  6.   


    我给修正下哈:用到了聚合函数,且同时有GROUP BY 和ORDER BY时
    则select中不在聚合函数中的columns和order by中的columns必须都出现在group by中

    验证用例:
    select deptno, sum(sal) 
    from emp 
    group by deptno,job
    order by deptno,job大家同意这句话吗?
      

  7.   

    可以不出现在group by中
    但需要聚合
    比如select A.colA,A.colB,sum(A.colC) 
    from A 
    group by A.colA,A.colB 
    order by A.colA,max(A.colD) 也可以用别的聚合函数代替
      

  8.   

    select A.colA,A.colB,sum(A.colC) 
    from A 
    group by A.colA,A.colB 
    order by A.colA,A.colD a.colD不在Group by 中也不在聚合函数中,所以报错
      

  9.   


    楼上的也正确,但是max(A.colD)只有一个值,没有什么意义,还不如不要max(A.colD)
      

  10.   

    谢谢大家的回答!!!综合大家的意见,我想最终的答案应该是这样:用到了聚合函数,且同时有GROUP BY 和ORDER BY时 
    则select中不在聚合函数中的columns和order by中不在聚合函数中的columns必须都出现在group by中