我收到了错误
“ORA-01427:单行子查询返回多行01427. 00000 - ”单行子查询返回多行“
因为下面的case语句返回两条记录 . 如果它可以从 where
子句中引用相同的 a.STRUCT_DOC_id
,它将不会返回两个记录,该子句是较大的 select
的一部分 .
子查询返回两个记录,但如果它引用了 a.STRUCT_DOC_id
,它是较大查询的一部分,它只会引入一条记录 .
SELECT DISTINCT a.STRUCT_DOC_id,
CASE WHEN Inclusions.Wound_Included = 'TRUE'
THEN (SELECT min_value
FROM etIndivCommitt b,
mn_structured_contract AA
WHERE b.STRUCT_DOC_id=AA.STRUCT_DOC_id AND
b.PP_Sub_Type like '%Wound%')
ELSE '0'
END Commitment_Value,
a.Product_ID
FROM
mn_structured_contract a
GetIndivCommitt b,
Inclusions C
WHERE
b.STRUCT_DOC_id=a.STRUCT_DOC_id
C.STRUCT_DOC_id=a.STRUCT_DOC_id
1 回答
据我所知,你试图为"wound"相关记录返回一个字段的
MIN
值 . 那是对的吗?如果是这样,您可以尝试这样的事情:几点说明:
这应该有效,因为你在
CASE
语句中的子查询中的连接与外部select中的连接相同(全部在STRUCT_DOC_id
上)你应该用你的实际字段替换
<whatever field you are getting the "min" of>
在您的
CASE
语句中,您有ELSE '0'
...如果您想要返回一个数字字段,您应该删除单引号在原始查询中,您将Inclusions表别名为
C
,但随后再次将其称为Inclusions.Wound_Included
. 为别名设置别名后,您应该只通过别名引用它我没有测试过,但试一试让我知道:)