如何从组中按日期选择第一行

kk *_*luo 1 sql sql-server

我有一个像这样的表:

City       date      Person 
A        2018/05/01   peter
A        2018/03/01   Jack
B        2018/02/16    TOM
C        2018/03/01   Mike
Run Code Online (Sandbox Code Playgroud)

现在我想找到每个城市最早的人。结果将是

A        2018/03/01   Jack
B        2018/02/16    TOM
C        2018/03/01   Mike
Run Code Online (Sandbox Code Playgroud)

怎么做?

sca*_*dge 5

您可以使用带有城市最小日期的子查询来连接您的表

select m.* from my_table m
inner join (
    select city, min(date) as min_date 
    from my_table  
    group by city 
) t  on t.city = m.city and t.min_date = m.date 
Run Code Online (Sandbox Code Playgroud)