SQL Join to get most recent record

后端 未结 2 747
無奈伤痛
無奈伤痛 2020-12-20 04:13

I have three tables:

  • Measurements (MeasureID, Time, Distance, Value)
  • Events(EventID, Time Value)
  • EventValues
2条回答
  •  猫巷女王i
    2020-12-20 04:38

    Try something like this (not tested)

    SELECT * FROM
    (
        SELECT M.*, E.*, EV.EventDataID, EV.Type, EV.Value,
            Rank() over (Partition BY M.MeasureID order by M.Time - E.Time) as Rank
        FROM [Measure] M 
        INNER JOIN [Event] E ON M.Time >= E.Time
        INNER JOIN EventValues EV ON E.EventID = EV.EventID
    ) T
    WHERE Rank = 1
    

    EDIT

    SELECT * FROM
    (
        SELECT M.*, E.*, EV.EventDataID, EV.Type, EV.Value,
            Rank() over (Partition BY M.MeasureID order by M.Time - E.Time) as Rank
        FROM [Measure] M 
        LEFT JOIN [Event] E ON M.Time >= E.Time
        LEFT JOIN EventValues EV ON E.EventID = EV.EventID
    ) T
    WHERE Rank = 1
    

提交回复
热议问题