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
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-21
你那个 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
第2个回答  2011-07-21
group by id未指明是哪个表的id
另外,你select了purarri.rq,purarri.jhdj,pinwei.pjpw,price2.pjdj,price2.id
但就group by一个id,不报‘在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中’的错误?那些列你不加聚合函数?
第3个回答  2011-07-21
分组的条件不正确,id标注是属于哪个表的

oracle 中 select sum(一个列字段) as ... 在下面有多个表外连接的情况...
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...

在oracle中删除一个字段时报引用的列处于多列的约束条件的错怎么办
disable外键的多列约束,然后删除主表的数据。再enable多列约束即可

oracle 数据库多表连接语法
当多个表中有相同的列名时,将表名或者表的别名作为列名的前缀。当数据从多表中查询时,要使用连接 (join) 条件。一个表中的行按照存在于相应列中的值被连接到另一个表中的行。在写一个连接表的 SELECT 语句时,在列名前面用表名或者表别名可以使语义清楚,并且加快数据库访问。为了连接 n 个表...

ORACLE SQL 多列外连接怎么匹配查询?
暂且设这两个名和这些个字段吧 select a.船名,b.港口名 抵港港口名,c.港口名 预抵港口名 from 船抵达港口表 a,港口表 b,港口表 c where a.抵港港口代码=b.港口代码 and a.预抵港口代码=c.港口代码 就是把第1个表拿出来用两次,分别和那个表关联 ...

oracle数据库中外连接和内连接有什么区别
外连接:返回2个表中完全符合条件的记录,再加上2个表中各自的记录,结果集中的字段只有一个表中有记录时,另一个表中的字段均使用空值null填写。例如A表:ID user partmentID 1 aaa 3 2 bbb 3 3 ccc (null)B表:parmentID PartmentName 3 pm001 4 pm002 ...

oracle怎么实现多表 连接查询 并分页。。。
oracle使用rownum伪列可以实现分页,三表连接分页示例代码如下:select * from (select rownum r,k.kch,k.kcm,cj.cj,x.xh,x.xm from KCB k,CJB cj,XSB x where k.kch = cj.kch and cj.xh = x.xh and rownum<=10) where r>0特别注意这样外层查询时由于内层查询的字段有重复列名...

oracle 问题,行级记录的某一字段内存多个值,有一个码表对应每个值的汉...
多个值的中间有间隔符吧,你是想直接select出来,还是插入到另外一张表中。如果是select出来,可能比较麻烦,你最好自己写一个函数,这个函数的作用是计数(记录间隔符的多少),查找(查找对应表中的对应的汉字),连接(汉字不能一个一个出吧,肯定要一起出完才行)如果是插入另外一张表,那么就把...

Oracle一个表中有部分相同字段与其他表关联,如何查询出该表除了关联字段...
感觉你说的不太清楚,所以不能完全理解你的意思,大概你是不是想要这样 查询出A表 a, b,c字段,还有B表的其他字段呢?你可以尝试下外连接吧 SELECT a.a, a.b, a.c FROM A a LEFT JOIN B b ON a.c = b.c WHERE 1=1 AND 条件自己加 应该可以满足你要求。不对的话你可以再描述下你...

oracle报错ora-00918:未明确定义列
1. 列名拼写错误或不存在:检查SQL查询中的列名是否拼写正确,并确保这些列存在于相关的数据表中。大小写敏感,需确保完全一致。2. 别名使用不当:如果在查询中使用了列的别名,需要确保别名的使用是正确的。别名应该在SELECT语句中用AS关键字明确指定。3. 表别名未正确设置:当使用表别名时,必须在查询...

Oracle之查询详解
select 列名 from 表1 别名,表2 别名... 注:e是emp的别名,d是dept的别名。 但如果对表进行了操作则需要设置别名,如:查询每个部门中工资高于该部门平均工资的员工人数。在其中有一个avg表,这个表必须设置别名(提醒:如果仅有一个被修改的表,则可以不设置别名,但如果有多个表则必须设置别名)。 内连接 内连接...

相似回答