oracle 中 select sum(一个列字段) as ... 在下面有多个表外连接的情况下 提示“未明确定义列”,为什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中 select sum(一个列字段) as ... 在下面有多个表外连接的情况下 提示“未明确定义列”,为什么?相关的知识,希望对你有一定的参考价值。

create table allast3 as
select purarri.rq,purarri.jhdj,sum(purarri.htl)as htl,pinwei.pjpw,price2.pjdj,price2.id
from purarri,pinwei,price2
where purarri.id = pinwei.id
and pinwei.id = price2.id
and purarri.id = price2.id
group by id

1)oracle中使用group by 分组时,分组的列必须包含了select语句中除了聚合函数列以外的所有列
create table allast3 as
select purarri.rq,purarri.jhdj,sum(purarri.htl)as htl,pinwei.pjpw,price2.pjdj,price2.id
from purarri,pinwei,price2
where purarri.id = pinwei.id
and pinwei.id = price2.id
and purarri.id = price2.id
group by purarri.rq,purarri.jhdj,pinwei.pjpw,price2.pjdj,price2.id
2)同时因为多个表都包含id这个字段,group by后面的id也必须指明是哪个表的id
参考技术A 你那个 group by id 没有指明那个id 改成 group by purarri.id

但是这个sum sum通过吗?不会提示非group by 表达式吗?
--------------------------------
你试一下下面两个语句看有什么结果:
select sum(purarri.htl)as htl,purarri.htl
from purarri,pinwei,price2
where purarri.id = pinwei.id
and pinwei.id = price2.id
and purarri.id = price2.id
group by id

select sum(purarri.htl)as htl,purarri.htl
from purarri,pinwei,price2
where purarri.id = pinwei.id
and pinwei.id = price2.id
and purarri.id = price2.id
group by purarri.htl
group by purarri.htl
参考技术B group by id未指明是哪个表的id
另外,你select了purarri.rq,purarri.jhdj,pinwei.pjpw,price2.pjdj,price2.id
但就group by一个id,不报‘在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中’的错误?那些列你不加聚合函数?
参考技术C 分组的条件不正确,id标注是属于哪个表的

oracle添加序号

用rownum可以加 但碰到group by 之后加的顺序是乱的 如何解决啊

比如你要按name 进行group by ,然后按name排序

select row_number() over (order by name) rn,name,sum(计算值) from 表名 group by name
参考技术A 建立1个表,多个id字段,且自增,将你的数据插入过去,如果需要的话,可以根据这个id字段更新你原表的排序字段 参考技术B rownum函数作用的column不可以用groupby排序的。

以上是关于oracle 中 select sum(一个列字段) as ... 在下面有多个表外连接的情况下 提示“未明确定义列”,为什么?的主要内容,如果未能解决你的问题,请参考以下文章

oracle添加序号

oracle 11g 行转列后的列名怎么在外层SQL中使用

oracle 怎么让两个列合成一个列 , 不是拼接到一个字段中

oracle 中 sum 如何使用,

oracle列转行 WM_CONCAT LISTAGG

oracle中像使用sum函数对某一列数据进行求和,但是同时需要输出其他字段,怎么求到总数