sql - 稍微修改SQL给我带来:ORA-01427:单行子查询返回多于一行
问题描述
我正在使用 Oracle Fusion,即财务/应付账款报告方面
我有以下代码:
SELECT DISTINCT PHA.SEGMENT1
FROM
AP_INVOICES_ALL AIA, -- https://docs.oracle.com/en/cloud/saas/financials/19a/oedmf/AP_INVOICES_ALL-tbl.html
PO_HEADERS_ALL PHA -- https://docs.oracle.com/applications/farel12/procurementop_gs/OEDMP/PO_HEADERS_ALL_tbl.htm
WHERE
AIA.PO_HEADER_ID = PHA.PO_HEADER_ID
AND AIA.PO_HEADER_ID IS NOT NULL
AND AIA.INVOICE_NUM = XTE.TRANSACTION_NUMBER
AND AIA.INVOICE_ID = XTE.SOURCE_ID_INT_1
这“有效”是因为它不返回任何错误。但是它正在查看错误的表,因此正在带回错误的数据。没什么大不了的,我们已经确定了它是哪张桌子。
它在如下更广泛的上下文中用于定义列值
(
CASE
WHEN
GJH.JE_SOURCE IN
(
'Purchasing', 'Payables'
)
THEN
(
SELECT DISTINCT
PHA.SEGMENT1
FROM
AP_INVOICES_ALL AIA, PO_HEADERS_ALL PHA
WHERE
AIA.PO_HEADER_ID = PHA.PO_HEADER_ID
AND AIA.PO_HEADER_ID IS NOT NULL
AND AIA.INVOICE_NUM = XTE.TRANSACTION_NUMBER
AND AIA.INVOICE_ID = XTE.SOURCE_ID_INT_1
)
WHEN
GJH.JE_SOURCE IN
(
'Receipt Accounting'
)
THEN
(
SELECT
CPOD.PO_NUMBER
FROM
--cmr_transactions ct
CMR_PURCHASE_ORDER_DTLS CPOD , CMR_RCV_EVENTS CRE , POZ_SUPPLIERS_V PS
WHERE
CRE.CMR_PO_DISTRIBUTION_ID = CPOD.CMR_PO_DISTRIBUTION_ID
AND CPOD.VENDOR_ID = PS.VENDOR_ID
AND CPOD.ACTIVE_FLAG = 'Y'
AND CRE.ACCOUNTING_EVENT_ID = XTE.SOURCE_ID_INT_1 )
ELSE
NULL
END
) AS PURCHORDERNUM,
但是我需要将 SQL 修改为以下内容:
SELECT DISTINCT PHA.SEGMENT1
FROM
AP_INVOICE_LINES_ALL AIA, -- https://docs.oracle.com/en/cloud/saas/financials/19a/oedmf/AP_INVOICE_LINES_ALL-tbl.html
PO_HEADERS_ALL PHA
WHERE
AIA.PO_HEADER_ID = PHA.PO_HEADER_ID
AND AIA.PO_HEADER_ID IS NOT NULL
--AND AIA.INVOICE_NUM = XTE.TRANSACTION_NUMBER
AND AIA.INVOICE_ID = XTE.SOURCE_ID_INT_1
现在这让我回来了ORA-01427: single-row subquery returns more than one row
,但我不明白为什么。我只是在更改它正在查看的表并使用 DISTINCT
解决方案
使用DISTINCT
并不意味着您只会获得一条记录。这意味着您将在结果集中获得每个不同的值之一。这意味着如果返回 5 条记录:
value1
value2
value2
value1
value3
使用DISTINCT
您将获得如下所示的结果集:
value1
value2
value3
您需要确保在WHERE
orON
子句中有足够的标准来确保返回单个值。
推荐阅读
- spring-boot - Spring Boot 2.x 多数据源和 jdbctemplate
- java - javax.mail 不想从我的 Web 应用程序发送邮件,但它从我的控制台应用程序发送邮件
- r - 在R中循环数据帧
- android - 静默安装 android 应用程序,无需用户交互
- typescript - 为什么 Typescript 不能从泛型类型中解开这个可选?
- jquery - CSS/查询:在表格的 th 和 td 之间放置一个可点击的图标,而不使用第二个表格
- caching - 更新后不渲染 Twig 文件(开发环境需要清除缓存)
- android - 如何膨胀包含矢量可绘制图标的布局?
- awk - awk 创建目录,然后创建带有 zip 的子目录
- jdbc - 通过 JDBC 访问非托管(外部)Azure Databricks Hive 表