group by 两个字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了group by 两个字段相关的知识,希望对你有一定的参考价值。

参考技术A     group by 的简单说明:  group by 和聚合函数一起使用才有意义,比如 count、sum、avg等。

    例如:select count(a),b from tableOne group by b,c;

        最终结果是在group by b 的基础上再次 group by c  。      

不是group by 表达式

select 物料号,物料所在部门,单据类型,日期,sum(数量),单位 from proddta.f4111 where 物料号 in (select 物料号 from f3002)
and 单据类型='OV' and 日期 between 108245 and 109245 group by 物料号

执行后提示“不是group by 表达式”

原因:select的不是聚合的字段和order by中的字段都必须在group by 中出现
解决办法:select count(advicedeta0_.topic_id) as col_0_0_, base_data2_.column_name as col_1_0_, advicedeta0_1_.congressId as col_2_0_
from advice_detail advicedeta0_ inner join topic advicedeta0_1_ on advicedeta0_.topic_id=advicedeta0_1_.id, Congress congress1_, Base_data base_data2_
where advicedeta0_1_.congressId=congress1_.id and congress1_.title=base_data2_.id and advicedeta0_1_.Congress_govid=2 and advicedeta0_1_.topictype=1
group by advicedeta0_1_.congressId,base_data2_.column_name,base_data2_.id
order by base_data2_.id
参考技术A oracle吧?oracle对SQL语句比较严格,这是执行不了的。。mysql一般能执行过去没问题。
改成 select sum(数量) from proddta.f4111 where 物料号 in (select 物料号 from f3002)
and 单据类型='OV' and 日期 between 108245 and 109245 group by 物料号

group by前面只能用sum(*),count(*).这种聚合函数
参考技术B 你要这样:
group by 物料号,物料所在部门,单据类型,日期,单位;
把非聚合函数的列都加入group by中才行本回答被提问者采纳

以上是关于group by 两个字段的主要内容,如果未能解决你的问题,请参考以下文章

group by两个分组字段的查询

group by 两个字段

mysql 可以group by 两个字段吗

SQL group by 后查某字段最大值

如何使用group by 分组查询表中所有字段信息

求教SQL语句group by两个不同表的字段