从sql serve中查询出现的最后一次记录

img


想从一张表里取出某个字段下所有值出现的最后一次记录,类似于上面这张表取出编号为001和002出现的最后一次记录,只能取到一个值的最后一条,所有的值同时取到最后一条,sql语句应该怎样处理?

用开窗函数分组排序就行了

select * from 
(select a.*, row_number() over(partition by 编号 order by id desc) rn from a) as  b
where b.rn=1

加一个字段SerialNo,取最大的流水号。