因为该列没有包含在聚合函数或 GROUP BY 子句中,强加group by数据不对
select
max(isnull(t.AC0534,'')) as [图片显示],
a.AD0506 as [产品品牌],
a.AC0011 as [产品编号],
max(isnull(a.AC0012,'')) as [厂家货号],
max(isnull(a.EC0104,'')) as [产品名称],
max(cast(isnull(a.AM0006,0) as decimal(12,2))) as [市场价],
max(cast(isnull(a.AM0007,0) as decimal(12,2))) as [零售价],
max(cast(isnull(t.AM0010,0) as decimal(12,2))) as [销售价],
max(isnull(a.AC0013,'')) as [产品简介]
from agt_trad..WFPUSER_A0301 a
join agt_trad..WFPUSER_A0304 t on a.AC0011=t.AC0011 and a.AD0506=t.AD0506
join agt_trad..WFPCODE_AD502 c on a.AD0506=c.objname and a.objid <>0 and a.AB0001=0 and isnull(a.AD0520,'0')='0'
join agt_trad..WFPUSER_A0301 b on a.parentid=b.objid
left join agt_trad..WFPUSER_A0301 b2 on b.parentid=b2.objid where
cast(isnull(t.AM0010,0) as decimal(12,2)) between 1 and 10 group by a.AD0506,a.AC0011
order by t.AM0010
这样写报错, ORDER BY 子句中的列 "agt_trad..WFPUSER_A0304.AM0010" 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
如果group by a.AD0506,a.AC0011.t.AM0010 这样强加的话数据不准,
怎么解决
相关推荐
Oracle中分组查询group by用法规则详解
Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。 使用having子句 限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。 在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数 select max(sal),job emp group by job; (注意
《Oracle编程自学与面试指南》16-03:Having子句
HAVING 子句过滤分组结果集。 HAVING 相当于WHERE,与WHERE的唯一区别是,当查询语句中有聚合函数的时候,只能用HAVING。
group by后使用rollup子句总结
group by后使用rollup子句总结,oracle开发人员值得一看
order by 、group by 、having的用法
order by 、group by 、having的用法区别 order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。 group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。 什么是“聚合函数”? 像sum()、count()、avg()等都是“聚合函数” 使用group by 的目的就是要将数据分类汇总。
实例详解Group by和Having子句
主要介绍了实例详解Group by和Having子句的相关资料,需要的朋友可以参考下


