现在我有两张桌子:
*表1 -*
数据
00/00/0000
4/1 2018年/2018年
4/2/2018
5/1/2018
5/2 2018年/2018年
5/3/2018
*表2 -*
数据._~_
2/2/2018
3/5/2018/2018
4/1/2018
4/3/2018/2018
4/15/2018
5/1/2018
5/2/2018
5/3/2018
我想要一个表3,它反映了转换的数量*表3 -*
数据变价成品率
2/2 2018年
3/5/2018/2018
4/1 2018年/2018
4/3/2018
4/15/2018
5/1 2018年
5/2/2018
5/3/2018
我将如何在SQL中实现这一点?原始数据非常大。
问题是,我希望表3的4/15/2018和4/3/2018 converted_amount遵循4/2/2018的汇率,因为Table1中没有4/15/2018年或4/3/2018年的汇率。基本上,我想让缺失的汇率跟随他们最接近的前一个日期的汇率。
此外,对于2018年4月1日之前的所有日期,汇率应采用表1的00/00/0000汇率。
真的很感谢你的帮助!非常感谢!
发布于 2018-05-02 05:26:03
您可以使用关联子查询来查找表2中每个日期的表1中最近的日期:
SELECT
t2.Date,
t2.USD,
t2.USD * (SELECT t1.ExchangeRate FROM Table1 t1
WHERE t1.Date <= t2.Date
ORDER BY DATEDIFF(t2.Date, t1.Date) LIMIT 1) AS ConvertedAmount
FROM Table2 t2;

Demo
注意,这是一种不受控制的方法,因为表2中日期的两边可能有两个最近的日期,其中一个可能是任意选择的。实际上,这里一个更好的长期方法是使用一个日历表,它每天都有外汇汇率。
https://stackoverflow.com/questions/50127582
复制相似问题