SQL Join para obtener el registro más reciente

Tengo tres tablas:

Measurements (MeasureID, Time, Distance, Value)Events(EventID, Time Value)EventValues (EventDataID, EventID, Type, Value)

Necesito obtener para cada medición, el evento más reciente (en el pasado) y sus datos de valores de evento asociados.

Mi consulta actual es bastante fea:

SELECT 
    M.*,
    (SELECT TOP 1 EV.value FROM [Event] E JOIN EventValues EV ON E.EventID = EV.EventID 
     WHERE M.Time >= E.Time ORDER BY M.Time-E.Time) AS Data,
FROM [Measure] M 
ORDER BY M.Distance

y solo me permite seleccionar una columna de laEventValues mesa (necesito más)

¿Hay alguna forma de que esto se pueda hacer mediante una unión?

EDITA: También necesito seleccionar TODAS las entradas de la tabla de medidas, incluso si son anteriores al primer evento (es decir, solo seleccionar datos nulos para la unión)

Respuestas a la pregunta(2)

Su respuesta a la pregunta