之前使用mysql的GROUP BY关键字时,可以在不使用聚合函数的情况下select多个非分组字段,比如:
select colnum1,colnum2 from table_name group by colnum1
这样得到的colnum2值,应该是每组中的第一个colnum2值。
但是在Oracle中这样使用会出现如下异常:
异常原因是:
在使用group by 时,select的字段存在两种情况:第一种,字段出现在group字句中,可以直接select;第二种,字段没在group子句中,select时要用聚合函数(比如max()、min()、avg())处理。
解决的方法也很简单,为非分组字段使用聚合函数。
如果在已经分组的情况下,select一个非分组字段,通常我们想得到的这个非分组字段都会有其特点。比如说最大值、最小值,这就分别对应聚合函数max()、min()。比如:
select colnum1,max(colnum2) from table_name group by colnum1