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

关于非工作日汇率转换SQL查询的两项技术疑问咨询

技术问询:汇率转换SQL查询相关疑问

需求背景

编写SQL查询将交易金额转换为美元(ccy_code = 840),需考虑汇率表仅含工作日数据,周末/节假日交易需采用此前最后一个工作日的汇率,结果需包含客户ID、交易日期、美元交易金额。

数据表信息

交易表(Transactions)

Client_id Report_date Txn_amount
123       2017.01.01  50000

汇率表(Rates)

Report_date Ccy_code CCy_rate
2016.12.30  840      60,58
2017.01.09  840      61,01

待分析的SQL查询代码

SELECT Client_id, Report_date, sum_usd
FROM
(
SELECT 
    Client_id, 
    Transactions.Report_date,
    Transactions.Txn_amount*Rates.Ccy_rate AS sum_usd, 
    ROW_NUMBER() OVER (PARTITION BY Transactions.Report_date ORDER BY Rates.Report_date DESC) AS ROW_NUM
     FROM Transactions
        JOIN Rates
        ON Rates.Report_date <= Transactions.Report_date
 WHERE Ccy_code = 840 
) AS T
WHERE ROW_NUM = 1

正式技术问询

  • 为何在需要获取更早日期的汇率时,窗口函数中要对Rates.Report_date采用降序(DESC)排序?
  • 为何查询计算得到的sum_usd结果为3000000,而非预期的3029000(50000*60.58)?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:46:08