首页 > 解决方案 > SQL - 按日期获取相关更新的值

问题描述

假设我有 2 张桌子

订单:

> order_id, dollar_amount, purchase_date 
>
> 1         10             10-10-2020 
>
> 2         30             10-10-2020 
>
> 3         10             12-10-2020 
>
> 4         40             19-10-2020

我有一个表格,其中包含在不同日期的美元到英镑值的更新

> dollar_to_pound update_date
> 
> 1.3             10-10-2020
> 
> 1.5             11-10-2020
> 
> 0.9             15-10-2020
> 
> 1.2             20-10-2020

我的目标是查询英镑价格,使用时间的更新价格,所以我得到这样的东西

order_id    dollar_price pound_value calculated
> 1         10           1.3         13
>
> 2         30           1.3         39
>
> 3         10           1.5         15
>
> 4         40           0.9         36

如何连接 2 个表?使用 equals 是行不通的,因为

标签: mysqlsql

解决方案


使用连接:

SELECT
    o.order_id,
    o.dollar_amount,
    r.dollar_to_pound AS pound_value
    o.dollar_amount * r.dollar_to_pound AS calculated
FROM Orders o
LEFT JOIN Rates r
    ON r.update_date = o.purchase_date
ORDER BY
    o.order_id;

上面的查询松散地假设费率表将始终填充有订单的所有日期。如果不是,那么给定的订单可能会报告NULL英镑换算值。您需要定义如何处理这种情况的逻辑。


推荐阅读