我不知道该怎么提我的问题,所以最好举个例子。我正在寻找一个函数或语句,该函数或语句将从单个表中产生以下结果。对于每个名称,返回具有最大id的行。
ID  NAME        ADDRESS
1   JOHN DOE    123 FAKE ST.
2   JOHN DOE    321 MAIN ST.
3   JOHN DOE    333 2ND AVE.
4   MARY JANE   222 1ST. AVE
5   MARY JANE   444 POPLAR ST.
6   SUZY JO     999 8TH AVE.
DESIRED RESULT
3   JOHN DOE    333 2ND AVE.
5   MARY JANE   444 POPLAR ST.
6   SUZY JO     999 8TH AVE.发布于 2018-12-10 19:45:10
一个选项是使用row_number窗口函数。这允许您为结果集建立行号。然后,您可以在over子句中定义分组和排序,在本例中,您希望partition by (组) name字段和order by id字段降序。最后,过滤那些结果where rn = 1,它返回每个分组的最大结果。
select * 
from (
    select *, row_number() over (partition by name order by id desc) rn
    from yourtable
) t
where rn = 1https://stackoverflow.com/questions/53712539
复制相似问题