在项目中遇到了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语句,
否则语法通不过。