需求是这样的:导出数据的时候过滤掉个提号重复的数据,只保留最新维护(最后一次添加)的那条。
经网上查找资料,得知row_number() 可以实现。
了解这个函数的使用,可看看这篇文章:
https://blog.csdn.net/pan_junbiao/article/details/79941162
里面讲解的很详细。
我的实际应用,SQL语句如下:
select u.userName,p.personNumber,p.personName,p.sex,pos.positionName,
p.entryTime,p.personStatus,p.jobStatus,p.leaveTime,p.nativePlace,p.certificateType,
p.certificateNumber,p.domicile,p.wedlock,p.cellPhoneNumber,p.eduBackground
FROM(
SELECT ROW_NUMBER() OVER(PARTITION BY personNumber,jobStatus ORDER BY id DESC) AS row_id,*
FROM dbo.el_personInfo
WHERE effective=1
) p ,dbo.Users u,dbo.eL_position pos,dbo.Area a
WHERE p.row_id = 1
and p.createrCode=u.loginCode
and p.positionID=pos.id
and u.AreaID=a.areaID
and a.COMPANY_ID=5
and u.status=1
and u.staID='2'
order by p.id
其中“PARTITION BY personNumber,jobStatus ”表示按personNumber和jobStatus分组。
这样的话,上面的2行数据就不会被视为重复。