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)