我正在尝试为特定月份的给定“帐户”返回一组属性。该帐户定义为三个属性的串联。我的代码如下。子查询本身在单独运行时可以正常运行,但在SELECT和WHERE子句中同时使用时则不起作用。我正在使用Oracle SQL Developer运行查询。如果有一种方法可以修改此查询,那么它会返回任何/所有适用的记录,这些记录都很好。任何帮助将不胜感激。
错误消息:
ORA-01427:单行子查询返回多个行
01427. 00000-“单行子查询返回多个行”
*原因:
*动作:
SELECT
MONTH_KEY,
(
(SELECT DISTINCT CAST (NUMBER_ATTRIBUTE_1
|| SUBSTR((10000000000 + NUMBER_ATTRIBUTE_2),-10,10)
|| SUBSTR((10000000000 + NUMBER_ATTRIBUTE_3),-10,10) AS VARCHAR(32))
FROM TABLE)
)
AS DERIVED_ATTRIBUTE,
NAME,
ANOTHER_VARIABLE
FROM TABLE
WHERE
(SELECT DISTINCT CAST (NUMBER_ATTRIBUTE_1
|| SUBSTR((10000000000 + NUMBER_ATTRIBUTE_2),-10,10)
|| SUBSTR((10000000000 + NUMBER_ATTRIBUTE_3),-10,10) AS VARCHAR(32))
FROM TABLE)
)
= (12345678900000000010000000001)
AND MONTH_KEY = (201903)
;
编辑: 谢谢@Ankit Bajpai。您建议的代码可以正常工作,并为我输入的所有指定的串联“ DERIVED_ATTRIBUTE”返回一条记录。
答案 0 :(得分:1)
您不需要选择同一张表的三次,因为您已经从TABLE中选择了数据。您可以在下面的查询中尝试-
SELECT MONTH_KEY
,CAST(NUMBER_ATTRIBUTE_1 ||
SUBSTR((10000000000 + NUMBER_ATTRIBUTE_2),-10,10) ||
SUBSTR((10000000000 + NUMBER_ATTRIBUTE_3),-10,10) AS VARCHAR(32)) AS DERIVED_ATTRIBUTE
,NAME
,ANOTHER_VARIABLE
FROM TABLE
WHERE CAST (NUMBER_ATTRIBUTE_1 ||
SUBSTR((10000000000 + NUMBER_ATTRIBUTE_2),-10,10) ||
SUBSTR((10000000000 + NUMBER_ATTRIBUTE_3),-10,10) AS VARCHAR(32)) = (12345678900000000010000000001)
AND MONTH_KEY = 201903