У меня есть три таблицы проблем и запрос, который генерирует следующий вывод из них, где каждое поле предваряется буквой, представляющей исходную таблицу для демонстрационных целей.Вместо этого мне хотелось бы получить отчет, содержащий только самые последние данные, т.е. я хочу получить только строку, возвращенную с MAX (EntryDate), но я не могу понять, как этого добиться.Я пробовал HAVING
, агрегаты и т. Д., Но безуспешно.Либо мой подход неверен, либо я что-то упускаю синтаксически.
s.ID r.FirstID m.ID m.PartNum m.Revision r.EntryDate
26 42 13 NULL A 2012-03-25 15:32:00
26 42 17 820044444 B 2012-03-27 09:48:00
26 42 14 820056789 C 2012-03-28 12:19:00
Желаемый результат:
s.ID r.FirstID m.ID m.PartNum m.Revision r.EntryDate
26 42 14 820056789 C 2012-03-28 12:19:00
Для небольшого дополнительного фона r.FirstID представляет группу записейвсе они связаны друг с другом, поэтому для каждой группировки Я хочу вернуть только запись с самыми последними данными.
Вот мой запрос, который у меня есть:
select s.ID,r.FirstID,m.ID,m.PartNum,m.Revision,r.EntryDate from StatusLog s
left join (select FirstID,PartInfoID from Request where PartInfoID is not null group by FirstID,PartInfoID) r on s.FirstID= r.FirstID
--required filtering here? Or move this extra join to the inner query?
left join PartInfo m on r.PartInfoID = m.ID
Я использую SQL Server для своей СУБД.