【问题标题】:SQL Previous currency rateSQL 以前的货币汇率
【发布时间】:2018-11-17 00:50:55
【问题描述】:

我想请您帮忙获取以前的货币汇率。 例如。我有两个要加入的表(Orders 和 CurrencyRates)。第一个表格包含以欧元为单位的订单,第二个表格包含从欧元到美元的汇率。

我想在订购日期之前加入。问题在于订单日期“10.11.2018”,其具有来自CurrencyRates 表的空率。我想在这里获得前一天汇率的值(在本例中为“09.11.2018”)。对于未来的日期(“18.11.2018”),我想从CurrencyRates 表中获得具有 max(Date) 的值。有没有办法加入它以获得期望值?

感谢您的帮助!

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:

    你可以使用cross apply:

    select o.*, cr.date, cr.rate, cr.currency
    from orders o cross apply
         (select top (1) cr.*
          from currencyrates cr
          where cr.date <= o.orderdate
          order by cr.date desc
         ) cr;
    

    【讨论】:

    • 这太明显了......这意味着我必须学习很多东西。非常感谢。这是我预期的答案。
    • @NewSQLGuy 。 . .这实际上并不明显。 Cross apply 实现横向连接,我认为这是 SQL 中相当高级的功能。
    • 我的意思是我应该知道这一点。无论如何,再谢谢你一次。
    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多