oracle 11G与10G 个别SQL差别

lanbooli 2009-12-04 05:10:42
SELECT (select placename from sysloginplace where id = a.YardName) YardNameDisp,
a.YardName,
a.CntrOrUnit2,
count(*) CntrNum,
sum(a.labhourpg) LabHourPg,
sum(a.labhourfp) LabHourFp,
sum(a.cntrlabhourpf) LabHourPf,
sum(a.labhour) LabHour,
sum(a.matcostrmb) MatCostRMB,
sum(a.cntrmatcostpfrmb) MatCostPfRMB
FROM V_PM04_PGTJ a
WHERE (a.CntrRepState in ('02', '03'))
and a.CntrRepState = '02'
and a.IsRentBack = '0'
and a.CntrOrUnit2 = '3'
group by a.YardName, a.CntrOrUnit2
order by a.YardName, a.CntrOrUnit2

上面这个语句在10g可以正常执行,但在11g数据库中执行显示报错信息:ora-01427 单行子查询返回多个行


各位如何解决???
...全文
309 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wh62592855 2009-12-08
  • 打赏
  • 举报
回复
应该不会出现在10g运行正常而在11g报错的情况

如果可以的话你把在两个版本上的运行代码和结果贴出来看看

或者你可以去确认一下sysloginplace表中的内容在你的10g和11g数据库中是否相同
也有可能在10g中正常运行是由于数据和11g中的表不一样
wh62592855 2009-12-08
  • 打赏
  • 举报
回复
ORA-01427: single-row subquery returns more than one row
Cause: The outer query must use one of the keywords ANY, ALL, IN, or NOT IN to specify values to compare because the subquery returned more than one row.
Action: Use ANY, ALL, IN, or NOT IN to specify which values to compare or reword the query so only one row is retrieved.
hebo2005 2009-12-08
  • 打赏
  • 举报
回复
应该是不是11G的问题,是你的数据有问题,如6楼说的,数据造成了子查询返回多行
lixinbill 2009-12-08
  • 打赏
  • 举报
回复
(select placename from sysloginplace where id = a.YardName) YardNameDisp,
楼主你的错误信息 应该是这句话报出来的
单独执行一下
select placename from sysloginplace where id = a.YardName
应该返回的是多条数据
huangyunzeng2008 2009-12-07
  • 打赏
  • 举报
回复
11g还没有用过呢!
BenChiM888 2009-12-07
  • 打赏
  • 举报
回复
原因很有可能是下面这句话返回了多条记录

(select placename from sysloginplace where id = a.YardName) YardNameDisp


肯定不是 10g和11g的区别,如果说11g的sql在10g上不能执行还算是个正常情况
反过来不太可能,应该是你数据的问题。
建议:

(select min(placename) from sysloginplace where id = a.YardName) YardNameDisp
(select max(placename) from sysloginplace where id = a.YardName) YardNameDisp
zxj828282 2009-12-07
  • 打赏
  • 举报
回复
12333
bobocici 2009-12-07
  • 打赏
  • 举报
回复
绝对是数据问题
xchuanliu 2009-12-04
  • 打赏
  • 举报
回复
你返回了一个结果集。
set后面跟的只能是具体的数据,只能一对一的使用
没用过11g不过报错应该原因都是差不多的

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧