假设obe表有这么三个字段,obe01,obe02,obe03SELECT DISTINCT oeb01,sum(oeb02) FROM oeb
    GROUP BY oeb03
    HAVING count(oeb01) > 1
    ORDER BY oeb01无法查出数据,而下面就可以
SELECT DISTINCT oeb01,sum(oeb02) FROM oeb
    GROUP BY oeb01
    HAVING count(oeb01) > 1
    ORDER BY oeb01
难道group by的字段,一定是select关键字后面的字段吗,不是就无法查询?

解决方案 »

  1.   

    要查询的列,如果用到分组语句,就必须在GROUP BY中
      

  2.   

    是的。
    如题中所述,第一个sql,oeb03字段都不是结果集中的字段,在分组之后,这个字段就没有了。
      

  3.   

    下面是GROUP BY的一些总结:GROUP BY后面可以出现多列。
    对行分组可以使用任何聚合函数。
    GROUP BY子句中出现的列,并不要求一定出现在SELECT子句中。
    如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,则这些列就必须在group by 子句中。
    就是说如果在一个查询中使用了聚合函数,则所选择的列一定是聚合函数中的列或者是出现在group by子句中的列,其它的列不允许被查询。你查询不出来结果是因为obe1前有distinct的原因。仔细想想一边按obe3分组,一边又要求obe1 distinct,Oracle不知如何做。
      

  4.   


    GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段  或者  是聚合函数中的字段
      

  5.   


    GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段  或者  是聚合函数中的字段
      

  6.   

    GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段  或者  是聚合函数中的字段是不是这样?
      

  7.   

    上面幾樓說的均對,小伙,要搞清GROUP BY和ORDER BY.
      

  8.   


    这总结对不对啊GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段 或者 是聚合函数中的字段
      

  9.   

    oeb03不在select的结果集中,无法进行group by