如果直接在Oracle中这样写,就会直接报以上显示的错误
正确写法:
select (select ar.name from t_area ar where ar.id=a.areaid )as 区域名,a.areaid 区域号,sum(a.money) 年水费合计数 from t_account a where a.year=‘2012‘ group by a.areaid;
总结:
- 如果没有group by 子句,select 中不能同时出现字段与分组的聚合函数,
例如:错误的用法
select ar.name 区域名,a.areaid 区域号,sum(a.money) 年水费合计数 from t_account a, t_area ar where ar.id=a.areaid
- 在使用group by 时,有一个规则需要遵守,即出现在select列表中的字段,如果没有在聚合函数中,那么必须出现在group by 子句中。(select中的字段不可以单独出现,必须出现在group语句中或者在聚合函数中。)
- 通俗点来说就是; 在有 group by 的子句的查询中 , 如果要在select 后面接 展示的字段 , 只能用当前group by 所在表的字段(group by 子句中的字段), 或者使用在聚合函数中
文章分享完毕,希望我的分享对大家有所帮助。更多学习技巧也可参阅:网站源码、模板、教程
Oracle 中关于 group by 的那些坑
标签:lock http sum 问题 模板 width 现在 HERE targe