首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sql中选择前一个最近的值

如何在sql中选择前一个最近的值
EN

Stack Overflow用户
提问于 2018-05-02 05:20:52
回答 1查看 55关注 0票数 0

现在我有两张桌子:

*表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汇率。

真的很感谢你的帮助!非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-05-02 05:26:03

您可以使用关联子查询来查找表2中每个日期的表1中最近的日期:

代码语言:javascript
复制
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中日期的两边可能有两个最近的日期,其中一个可能是任意选择的。实际上,这里一个更好的长期方法是使用一个日历表,它每天都有外汇汇率。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50127582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档