У меня есть истории таблица (например, журнал), который регистрирует изменения в часть:Получить последнюю дату для каждой записи
TransactionID Part ID Description Last Updated
1 1 Fixed O-ring 2006-03-14 20:00:04.700
2 2 Replaced coil 2009-01-02 20:00:04.700
3 1 Replaced coil 2009-01-02 20:00:04.700
4 1 Replaced LED 2002-08-20 20:00:04.700
5 2 Sealed leakage 2007-03-08 20:00:04.700
6 3 Replace connector 2004-05-16 20:00:04.700
У меня есть другая таблица, которая покажет, что каждая часть ID обозначает, но это не проблема, с которой я сейчас сталкиваюсь. Я должен написать запрос, который возвращает последнее обслуживание, выполняемое на каждой части. Так что в этом случае, мой ожидаемый результат будет:
TransactionID Part ID Description Last Updated
2 2 Replaced coil 2009-01-02 20:00:04.700
3 1 Replaced coil 2009-01-02 20:00:04.700
6 3 Replace connector 2004-05-16 20:00:04.700
Объяснения: Например, последнее обслуживание для части ID # 1 было завершено 2009-01-02 20: 00: 04.700 и так далее.
Я пробовал SELECT DISTINCT
, но это не сработает, потому что в принципе все строки будут разными. Я совершенно не понимаю. И если я использую MAX(Last Updated)
, он вернет только одну строку всей таблицы.
Отредактировано: В любом случае, я НЕ разрешаю использовать динамический запрос.
Какая версия SQL Server вы используете? Вы знакомы с функцией ROW_NUMBER()? –
Я использую SQL Server 2008, и да, я слышал о Row_Number(), но не слишком хорошо знаком с ним –