2010-07-15 1 views
1

У меня есть следующая таблица:TSQL - Макс или Top Дата на ненормированную таблице

Таблица: UserName

Userid User  UserUpdate 
1  Dan   1/1/2005 
1  Dan   1/1/2007 
1  Dan   1/1/2009 
2  Pam   1/1/2005 
2  Pam   1/1/2006 
2  Pam   1/1/2008 
3  Sam   1/1/2008 
3  Sam   1/1/2009 

Мне нужно извлечь последние обновления для всех этих пользователей, в основном, вот что я м ищет:

Userid User  UserUpdate 
1  Dan   1/1/2009 
2  Pam   1/1/2008 
3  Sam   1/1/2009 

Я пытался делать SELECT, TOP или Макс, но получить только последний результат, то есть 1 результат для всей таблицы, которая является не то, что я хочу.

ответ

4
SELECT Userid, User, Max(UserUpdate) AS MaxDate 
FROM myTable 
GROUP BY Userid, User 
+0

Это мой ордер на другой вопрос ... но что, если вместо поля «пользователь» у меня есть «FirstName» и «LastName»? Если я сделаю группу на тех, то я получаю повторяющиеся строки назад с разными именами FirstName и LastName, как я могу извлечь из них последнюю дату? – firedrawndagger

+0

'SELECT Userid, FirstName, LastName, Max (UserUpdate) AS MaxDate FROM myTable GROUP BY Userid, FirstName, LastName'. Если это не сработает, отправьте образцы данных ввода и вывода данных, чтобы люди поняли, почему это не сработает. – shahkalpesh

+0

Ярмарка Достаточно, я разместил его здесь: http://stackoverflow.com/questions/3259386/tsql-select-max – firedrawndagger

0
Select Userid, User, MAX(UserUpdate) from myTable GROUP BY Userid, User 
+2

Пользователь не в группе по, так что это не будет работать. Вам нужно либо max (Пользователь), либо группу с помощью userid, user –