【发布时间】:2018-07-09 20:01:33
【问题描述】:
三个表:
COST_SAVINGS:COST_SAVINGS_ID、ONE_TIME_CREDIT、CREATION_DATE、INVOICE_ID(FK 到 Invoice 表)
INVOICE:INVOICE_ID、INVOICE_CURRENCY_CODE
EXCHANGE_RATE:CURRENCY_RATE,CURRENCY_DATE
我正在报告成本节省(第一个表)。挑战在于每个成本节省金额可以使用不同的货币,因此我需要一个字段来显示基于发票表中的货币的转换金额以及 Exchange.Ex_Date 和 Cost_Savings.Create_Date 之间的匹配月/年。
我收到一条错误消息:
单行子查询返回多行
这是我目前所拥有的:
SELECT
COST_SAVINGS.COST_SAVINGS_ID,
COST_SAVINGS.CLAIM_TYPE,
COST_SAVINGS.COMMENTS,
COST_SAVINGS.COST_SAVINGS_STATUS,
COST_SAVINGS.CREATION_DATE,
COST_SAVINGS.DESCRIPTION,
COST_SAVINGS.ONE_TIME_CREDIT AS CREDIT_IN_NATIVE_CURRENCY,
FINANCE_INVOICE.CURRENCY_CODE,
COST_SAVINGS.ONE_TIME_CREDIT *
(SELECT EXCHANGE_RATE.CURRENCY_RATE
FROM EXCHANGE_RATE
WHERE EXTRACT (MONTH FROM COST_SAVINGS.CREATION_DATE) = EXTRACT (MONTH FROM EXCHANGE_RATE.CURRENCY_DATE)
AND EXTRACT (YEAR FROM COST_SAVINGS.CREATION_DATE) = EXTRACT (YEAR FROM EXCHANGE_RATE.CURRENCY_DATE)
AND FINANCE_INVOICE.CURRENCY_CODE = EXCHANGE_RATE.CURRENCY_CODE) AS CREDIT_IN_USD
FROM COST_SAVINGS
LEFT JOIN FINANCE_INVOICE ON COST_SAVINGS.INVOICE_ID = FINANCE_INVOICE.INVOICE_ID
我觉得问题可能出在我的子查询中的第三个 WHERE 子句(尝试匹配货币代码)。我不确定如何解决它。有什么想法吗?
【问题讨论】:
标签: mysql select subquery calculated-columns