我不知道该怎么提我的问题,所以最好举个例子。我正在寻找一个函数或语句,该函数或语句将从单个表中产生以下结果。对于每个名称,返回具有最大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
复制相似问题