select * from (select a.*,rownum row_num from (select a.directflag,(select sheettypename from
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
sheettypename,(select code||'-'||abbrev from channel where channelid=a.outcomecustomer)
outcustomer,(select code||'-'||abbrev from channel where channelid=a.incomecustomer)
incustomer,(select balancetype from balancetypeset where id=a.balancetypeid)
balancetype,(select goodsno||'-'||goodsname from goods where goodsid=a.goodsid)
goodsnanme,a.quantity,a.price,a.amount,a.accdate from channelaccount a where 1=1
and a.incomecustomer='acd488efdcc8f4a0ae2e42ebbe8e2f72') a) where row_num>0 and row_num<=20执行报ORA-01427:单行子查询返回多个行
求高人指点oracle
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
sheettypename,(select code||'-'||abbrev from channel where channelid=a.outcomecustomer)
outcustomer,(select code||'-'||abbrev from channel where channelid=a.incomecustomer)
incustomer,(select balancetype from balancetypeset where id=a.balancetypeid)
balancetype,(select goodsno||'-'||goodsname from goods where goodsid=a.goodsid)
goodsnanme,a.quantity,a.price,a.amount,a.accdate from channelaccount a where 1=1
and a.incomecustomer='acd488efdcc8f4a0ae2e42ebbe8e2f72') a) where row_num>0 and row_num<=20执行报ORA-01427:单行子查询返回多个行
求高人指点oracle
解决方案 »
- 新手问个oracle的小问题
- 关于Oracle数据库
- linux上oracle10.2.0安装问题(非常感谢大家帮忙)
- 急!那位耐心帮我看一看这个pl/sql调用外部dll的问题.
- java.lang.ClassCastException: oracle.sql.CLOB
- TO_NUMBER函数怎么用?
- 关于ORACLE中单个表分段的问题
- 安装8.1.7后,不能新建数据库的问题
- oracle中是否有连结并访问其他种类数据库的方法?我搜索过好像没有明确的解决方法,欢迎大家指教!
- 一个简单的sql
- Oracle SQLupdate 问题
- Oralce在引用java代码时出现symbol : variable Base64 问题
(select sheettypename from sheettype where id in(select sheettypeid from moduletype
where moduleid=trim(a.sheetidruleid))) sheettypename,(select code||'-'||abbrev from channel
where channelid=a.outcomecustomer) outcustomer,(select code||'-'||abbrev from channel
where channelid=a.incomecustomer) incustomer,(select balancetype from balancetypeset
where id=a.balancetypeid) balancetype,(select goodsno||'-'||goodsname from goods
where goodsid=a.goodsid) goodsnanme,a.quantity,a.price,a.amount,a.accdate from
channelaccount a where 1=1 and a.incomecustomer='acd488efdcc8f4a0ae2e42ebbe8e2f72') a)
where row_num>0 and row_num<=20改了in还是一样ORA-01427:单行子查询返回多个行
FROM (SELECT A.*, ROWNUM ROW_NUM
FROM (SELECT A.DIRECTFLAG,
(SELECT SHEETTYPENAME
FROM SHEETTYPE
WHERE ID =
(SELECT SHEETTYPEID
FROM MODULETYPE
WHERE MODULEID = TRIM(A.SHEETIDRULEID))) SHEETTYPENAME,
(SELECT CODE || '-' || ABBREV
FROM CHANNEL
WHERE CHANNELID = A.OUTCOMECUSTOMER) OUTCUSTOMER,
(SELECT CODE || '-' || ABBREV
FROM CHANNEL
WHERE CHANNELID = A.INCOMECUSTOMER) INCUSTOMER,
(SELECT BALANCETYPE
FROM BALANCETYPESET
WHERE ID = A.BALANCETYPEID) BALANCETYPE,
(SELECT GOODSNO || '-' || GOODSNAME
FROM GOODS
WHERE GOODSID = A.GOODSID) GOODSNANME,
A.QUANTITY,
A.PRICE,
A.AMOUNT,
A.ACCDATE
FROM CHANNELACCOUNT A
WHERE 1 = 1
AND A.INCOMECUSTOMER = 'acd488efdcc8f4a0ae2e42ebbe8e2f72') A)
WHERE ROW_NUM > 0
AND ROW_NUM <= 20
就检查下你 id = 的那几个地方,看看是不是子查询返回多条记录了。
应该是这里有问题吧。。返回多个值了!
btw:没有数据环境,真不好说你哪个查询有问题,最可能就是你id= 那个地方。
from (select a.*, rownum row_num
from (select a.directflag,
(select wm_concat(sheettypename)
from sheettype
where id in
(select sheettypeid
from moduletype
where moduleid = trim(a.sheetidruleid))) sheettypename,
(select code || '-' || abbrev
from channel
where channelid = a.outcomecustomer) outcustomer,
(select code || '-' || abbrev
from channel
where channelid = a.incomecustomer) incustomer,
(select balancetype
from balancetypeset
where id = a.balancetypeid) balancetype,
(select goodsno || '-' || goodsname
from goods
where goodsid = a.goodsid) goodsnanme,
a.quantity,
a.price,
a.amount,
a.accdate
from channelaccount a
where 1 = 1
and a.incomecustomer = 'acd488efdcc8f4a0ae2e42ebbe8e2f72') a)
where row_num > 0
and row_num <= 20
SHEETTYPENAME、OUTCUSTOMER、INCUSTOMER、BALANCETYPE、GOODSNANME这些字段都是通过在select子句中进行子查询查出来的,应该是这里存在查询出结果的数量大于1的子句
比如说SELECT CODE || '-' || ABBREV FROM CHANNEL WHERE CHANNELID = A.OUTCOMECUSTOMER
通过CHANNELID = A.OUTCOMECUSTOMER查询出的结果必须不能多于1条,如果CHANNELID有重复的就会报单行子查询返回多行