ORACLE 类似运行以下sql语句 总报 ORA-00937:不是单组分组函数 错误
select MARI_YN,GEND_CD,count(CASE WHEN substr(BIRT_YMD,0,4) BETWEEN '1996' and '2015' THEN '20岁以下' ELSE null END)"20岁以下",
count(CASE WHEN substr(BIRT_YMD,0,4) BETWEEN '1991' and '1995' THEN '20岁~25岁' ELSE null END)"20岁~25岁",
count(CASE WHEN substr(BIRT_YMD,0,4) BETWEEN '1986' and '1990' THEN '26岁~30岁' ELSE null END)"26岁~30岁"
from table_name;
原因:
这个错误一般是没有后面的GROUP BY才有的!
写成 from table_name GROUP BY MARI_YN,GEND_CD; 就没问题里了.
一般写sql语句时 当sql语句中含有 sum,max,count,min等这些聚合函数时,那么非聚合函数字段(在这里指 字段MARI_YN,GEND_CD) 都要放在 GROUP BY 后 分组排列
再通俗的说 group by后面的字段 不能少于查询中的非聚合函数字段.
select MARI_YN,GEND_CD,count(CASE WHEN substr(BIRT_YMD,0,4) BETWEEN '1996' and '2015' THEN '20岁以下' ELSE null END)"20岁以下",
count(CASE WHEN substr(BIRT_YMD,0,4) BETWEEN '1991' and '1995' THEN '20岁~25岁' ELSE null END)"20岁~25岁",
count(CASE WHEN substr(BIRT_YMD,0,4) BETWEEN '1986' and '1990' THEN '26岁~30岁' ELSE null END)"26岁~30岁"
from table_name;
原因:
这个错误一般是没有后面的GROUP BY才有的!
写成 from table_name GROUP BY MARI_YN,GEND_CD; 就没问题里了.
一般写sql语句时 当sql语句中含有 sum,max,count,min等这些聚合函数时,那么非聚合函数字段(在这里指 字段MARI_YN,GEND_CD) 都要放在 GROUP BY 后 分组排列
再通俗的说 group by后面的字段 不能少于查询中的非聚合函数字段.