ORA-00937: 不是单组分组函数

ORA-00937: 不是单组分组函数,第1张

实例:select deptno,count(empno) from emp

报错:不是单组分组函数

原因:

1, 如果程序中使用了分组函数,则有两种情况可以使用:

程序中存在group by,并指定了分组条件,这样可以将分组条件一起查询出来

改为:

select deptno,count(empno) from emp group by deptno

如果不使用分组的活,则只能单独使用分组函数

改为:

select count(empno) from emp

2, 在使用分组函数的时候,不能出现分组条件之外的字段

总结:在select需要查询的语句中选中的字段,必须出现在group by子句中

顺利分组

SELECT

listagg(t.NAME , ',') WITHIN GROUP (ORDER BY a.CREATE_DATE) AS tName

FROM

AMASSRH.INFO_TB_SUBJECT a

LEFT JOIN AMASSRH.INFO_TB_BUILDING b ON a.BUILDING_ID = b.id

LEFT JOIN AMASSRH.CM_TB_TAG_SUBJECT_RELATION g ON a.id = g.SUBJECT_ID

LEFT JOIN AMASSRH.CM_TB_TAG t ON g.TAG_ID = t.id

WHERE

a.DEL_FLAG = '0'

AND b.DEL_FLAG = '0'

AND g.DEL_FLAG = '0'

AND a.PLACE_TYPE = '01'

AND t.DEL_FLAG = '0'

AND a.id = '49'

select deptno,max(count(*)) from emp group by deptno

其中max(count(*))相当于2次分组,那么对应的select 中的其他列也需要进行2次分组,比如说:

select max(deptno),max(count(*)) from emp group by deptno

原因很简单,sql语言就面向集合的,如果求出来max(count(*)),那么deptno需要对应的是哪一条呢?

select zrrs,jrrs,xq,FFZL,sum(xzhj+syhj+lthj)gzze,sum(syrs+xzrs+ltrs)rfrs from tbl_dwxt_gzhz group by id,zrrs,jrrs,xq

select了什么字段,后面就需要group by,或者加函数处理select的字段。

如果你一定要group by id,那就在你select的字段里加函数处理,如

select max(zrrs),max(jrrs),max(xq),max(FFZL),sum(xzhj+syhj+lthj)gzze,sum(syrs+xzrs+ltrs)rfrs from tbl_dwxt_gzhz group by id.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6625085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-25
下一篇 2023-03-25

发表评论

登录后才能评论

评论列表(0条)

保存