关于 ORA-00937不是单组分组函数的解决办法

在项目中遇到了ora-00937 的问题,找了半天原来是聚合函数没有和group by 语句一起使用的原因,

select 列表项中除了包含聚合函数外,还包含了表的某些列,那么你将必须使用group by语句,否则语法通不过。

如 以下语法是编译不通过的

select j.d_jobid,count(p.d_lineid) as "num" ,
j.bdrq,j.downloaddate ,j.downloadname  ,j.change_type 
 from b_mediumvoltagejob j,b_mediumvoltagejob_line p where 
 j.d_jobid=p.d_jobid and j.lxgd=1

 因为select 语句中使用了聚合函数count,而且包含了d_jobid等表的其他列,那么这里必须使用group by分组函数。其实仔细想想原理还是很简单的,因为当你不使用group by 分组函数时,count函数没办法按照某一标准进行统计的,所以会报ora-00937错误。

结论:

select 列表项中除了包含聚合函数外,还包含了表的某些列,那么你将必须使用group by语句,
否则语法通不过。

猜你喜欢

转载自840536410.iteye.com/blog/2094809