Я задал связанный вопрос и получил несколько действительно хороших ответов, но я пытаюсь сделать запрос без создания временной таблицы. Я верю, что это можно сделать, но я не могу понять, как это сделать.
У меня есть две таблицы, и я хочу получить последний статус для каждой записи, где дата статуса меньше или равна дате входа.
Таблица записей (Entry):
UserID | EntryDate
----------------------
1 | 5/4/2010
1 | 4/4/2010
1 | 3/4/2010
1 | 2/4/2010
2 | 5/4/2010
2 | 4/4/2010
Таблица состояния записи (Status):
UserID | StatusDate | Detail
-------------------------------
1 | 5/28/2010 | D-1
1 | 4/24/2010 | D-2
1 | 4/5/2010 | D-3
1 | 2/28/2010 | D-4
Ожидаемый результат:
UserID | EntryDate | Detail
---------------------------
1 | 5/4/2010 | D-2
1 | 4/4/2010 | D-4
1 | 3/4/2010 | D-4
1 | 2/4/2010 | <NULL>
В моем предыдущем вопросе вы можете увидеть мои усилия и связанные с ними ответы, но я сузил проблему, чтобы упростить проблему.
Я пытался сделать что-то подобное (но я знаю, что я должен быть ужасно выключен):
SELECT E.EntryDate,
S.Detail,
MAX(S.StatusDate) AS MaxStatusDate
FROM Entry AS E
LEFT OUTER JOIN Status AS S ON E.EntryDate >= S.StatusDate