假设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关键字后面的字段吗,不是就无法查询?
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关键字后面的字段吗,不是就无法查询?
如题中所述,第一个sql,oeb03字段都不是结果集中的字段,在分组之后,这个字段就没有了。
对行分组可以使用任何聚合函数。
GROUP BY子句中出现的列,并不要求一定出现在SELECT子句中。
如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,则这些列就必须在group by 子句中。
就是说如果在一个查询中使用了聚合函数,则所选择的列一定是聚合函数中的列或者是出现在group by子句中的列,其它的列不允许被查询。你查询不出来结果是因为obe1前有distinct的原因。仔细想想一边按obe3分组,一边又要求obe1 distinct,Oracle不知如何做。
GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段 或者 是聚合函数中的字段
GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段 或者 是聚合函数中的字段
这总结对不对啊GROUP BY和ORDER BY的字段,必须是查询出的结果集中的字段 或者 是聚合函数中的字段