【发布时间】:2019-12-28 04:16:20
【问题描述】:
我试图在嵌套情况下从 abcdef 表中检索值,我在 SELECTS MENTIONED 中得到“单行子查询返回多行”错误 ---- 此处出现错误。 情况1:当colC值在NOT NULL并且没有值('LM','OP','QR')时,当colD为NULL时colD值在'00'和'99'之间 情况 2:当 colC 值在 NOT NULL 并且确实有值('LM','OP','QR')时,当 colD 为 NULL 时返回该行或当 colE 为 null 时返回该行
如何重写此查询以获得正确的结果
Table abcdef
colfKEY | colA | colB | colC | colD | colE
Table maintable
colPKEY | colTemp
select
a.colA , a.colB, a.colC,
CASE
WHEN a.colC IS NULL THEN ''
WHEN a.colC IS NOT NULL THEN
(CASE
WHEN (a.colC NOT IN ('LM','OP','QR')) THEN
(CASE WHEN (a.colD IS NULL) THEN
(SELECT T.colD FROM abcdef T where T.colD IS NULL) ---- error here
WHEN TT.colD IS NOT NULL THEN
(SELECT TT.colD from abcdef TT WHERE (TT.colD < '00') OR (TT.colD > '99') ) ---- error here
END)
WHEN (a.colC IN ('LM','OP','QR')) THEN
(CASE WHEN a.colD IS NULL THEN
(SELECT a.colD FROM abcdef a) ---- error here
WHEN a.colE IS NULL THEN
(SELECT a.colE FROM abcdef a) ---- error here
END )
END)
END
from abcdef a where
a.colfKEY IN
(SELECT m.colPKEY FROM maintable m where
m.colTemp= '999999');
【问题讨论】:
-
您的子查询返回超过 1 条记录。如果您对子查询中的任何记录都满意,请在 where 子句中尝试
and rownum=1。