如何通过将一个表中的日期与另一个表中最接近和之前的日期进行匹配来连接两个表

问题描述

Tables and Desired Output Examples

我正在寻找一个查询来尝试在每个事件之前获取一组世界排名。这最终将用于线性回归模型,以查看使用世界排名预测事件结果的准确性。注意。同一天可以有多个锦标赛。

解决方法

您可以使用 lag() 获取每个事件之前的时间段。然后join

select e.*,r.*
from rankings r left join
     (select e.*,lag(event_date) over (order by event_date) as prev_event_date
      from events e
     ) e
     on r.ranking_date < event_date and
        (r.ranking_date >= prev_event_date or prev_event_date is null)
,

我认为 INNER JOIN 可以解决您的问题

SELECT E.Event,E.Event_Date,R.PlayerName,R.World_Ranking
FROM EVENTS_TABLE E 
INNER JOIN RANKINGS_TABLE R on MONTH(E.Event_Date) = MONTH(R.Ranking_Date)
          AND YEAR(E.Event_Date) = YEAR(R.Ranking_Date)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...