选择记录,因为其日期字段比另一个记录日期字段晚X天

时间:2020-10-05 14:43:31

标签: mysql sql datetime window-functions unpivot

我有一个带有列的表格GameData;我的nba数据库中的GameID,日期,开始时间,持续时间,AteamId,HteamID,Ascore,Hscore,出勤率。它基本上保存有关NBA游戏的数据。我想选择X天休息后为特定球队效力的所有记录。

到目前为止,我在选择记录时遇到了麻烦 select * from GameData where Date+2 in (Select Date from GameData) and ATeamID = 1030;但这只是为特定团队获取所有日期相隔两天的带有Date值的记录,但它不会检查两者之间是否有记录。只能选择上次玩游戏后两天的游戏,而不是仅仅玩完游戏后两天的游戏,无论中间是否玩过游戏。

1 个答案:

答案 0 :(得分:0)

您可以使用union all取消数据透视表的生成,从而为每个游戏和每个团队生成一行,然后使用lag()获取“先前”游戏的日期,最后使用该信息进行筛选:< / p>

select gd.*
from (
    select gd.*, lag(date) over(partition by team order by date) lag_date 
    from (
        select gd.*, ateam team from gamedata gd
        union all
        select gd.*, hteam team from gamedata gd
    ) gd
) gd
where date > lag_date + interval 2 day
相关问题