Using First_Value () In Sql server
;WITH CTE(City,[date],Person ) AS ( SELECT 'A','2018/05/01','peter' UNION ALL SELECT 'A','2018/03/01','Jack' UNION ALL SELECT 'B','2018/02/16','TOM' UNION ALL SELECT 'C','2018/03/01','Mike' ) SELECT DISTINCT City, FIRST_VALUE([date])OVER (PARTITION BY City ORDER BY [date]) AS [date], FIRST_VALUE(Person)OVER (PARTITION BY City ORDER BY [date])AS Person FROM CTE
Result,Demo: http://rextester.com/DLPE49383
City date Person -------------------------- A 2018/03/01 Jack B 2018/02/16 TOM C 2018/03/01 Mike