You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无同币种汇率数据时,交易表币种转换为USD的SQL查询修正咨询

没问题,我来帮你搞定这个汇率转换的问题~

你的核心问题在于:当交易币种本身就是USD时,ExchangeRate表里没有对应的USD→USD汇率记录,左连接后Exchange_Rate会变成NULL,相乘后结果自然也不对。解决思路很简单:给同币种的情况默认一个汇率1(因为本币转本币不需要换算)。

这里有两种简洁的实现方式:

方法1:用COALESCE处理NULL值

COALESCE函数会返回传入参数里第一个非NULL的值,刚好可以用来替换缺失的同币种汇率:

SELECT 
    Currency,
    Local_Price,
    Local_Price * COALESCE(ER.Exchange_Rate, 1) AS In_USD
FROM Transaction T
LEFT JOIN ExchangeRate ER 
    ON T.Currency = ER.From_Currency 
    AND ER.To_Currency = 'USD'

方法2:用CASE WHEN显式判断

如果觉得COALESCE不够直观,也可以用CASE语句明确处理两种情况:

SELECT 
    Currency,
    Local_Price,
    CASE 
        WHEN ER.Exchange_Rate IS NOT NULL THEN Local_Price * ER.Exchange_Rate
        ELSE Local_Price  -- 等同于 Local_Price * 1
    END AS In_USD
FROM Transaction T
LEFT JOIN ExchangeRate ER 
    ON T.Currency = ER.From_Currency 
    AND ER.To_Currency = 'USD'

这两种写法都能得到你想要的预期结果:USD的记录会直接保留原金额,其他币种则用对应的汇率换算成USD。

内容的提问来源于stack exchange,提问作者user2293950

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:04:04