sql - 收到“单行子查询返回多行”错误
问题描述
我正在尝试为特定月份的给定“帐户”返回一组属性。帐户被定义为三个属性的串联。我的代码如下。子查询本身在单独运行时有效,但在同时用于 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”返回一条记录。
解决方案
您不需要三次选择同一个表,因为您已经从 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
推荐阅读
- javascript - NodeJS:使用管道从可读流写入文件会导致堆内存错误
- azure-powershell - 当我转换为大写时 azure-powershell 命令未按预期工作
- python - 我如何从平均向量中获得 word2vec 相似度?
- javascript - Angular & Mongo 查询,返回结果与搜索关键字密切相关
- python - 尝试简单程序时 mxnet 核心转储
- oracle - oracle plsql中同时记录类型、Collection和Bulk collect
- c# - Linq - 连接子句中的表达式之一的类型不正确。调用“加入”时类型推断失败
- c - 如何在 C 中的 pthread 中为 system() 调用启用 SIGINT 信号?
- mysql - 删除 MySQL 中指定列名下的所有记录
- laravel - 高图 | 过去 3 个月内每周增加积分