SQL Server — Как отобразить самые последние записи

#sql #sql-server #sql-server-2008 #tsql #greatest-n-per-group

#sql #sql-server #sql-server-2008 #tsql #наибольшее число пользователей на группу

Вопрос:

У меня есть таблица в SQL Server.

 ID PID LASTMODIFIED REASON
1  1   01/01/2011   XYZ
2  1   04/01/2011   XYY
3  2   05/01/2011   ZZZ
4  2   03/01/2011   ABC
  

Я хочу выбрать строки на основе MAX (LASTMODIFIED) для каждого PID. Например, выбор должен возвращать следующее:

 ID PID LASTMODIFIED REASON
2  1   04/01/2011   XYY
3  2   05/01/2011   ZZZ
  

Пожалуйста, помогите мне с инструкцией SQL. Спасибо.

Ответ №1:

 SELECT A.ID, A.PID, A.LastModified, A.Reason 
FROM MyTable AS A INNER JOIN (
SELECT PID, MAX(LastModified) AS MaxDate
FROM MyTable
GROUP BY PID) AS B ON A.PID = B.PID AND A.LastModified = B.MaxDate