所以我正在尝试创建一个对重复记录进行排名的报告,其背后的想法是客户想要合并从迁移中产生的大量重复记录。
我需要排名,以便我的报告可以显示哪条记录应该是“主要”记录,即记录中会丢失数据。
重复定义非常简单:
如果电子邮件地址相同,那么它始终是重复的,如果 电子邮件不匹配,那么名字,姓氏和手机必须 匹配。
排名将基于表格中的一大堆列,所以:
电子邮件地址不是NULL = 50 电话号码不是NULL = 20
等。以重复组中最高的数字为准,成为主要记录。这是我遇到问题的地方,我似乎找不到为每个重复集获取增量数的方法。这是我到目前为止的一些代码:
(我在临时表和CTE表达式中取出了一些等级列来缩短它)
DECLARE @tmp_Duplicates TABLE (
tmp_personID INT
, tmp_Firstname NVARCHAR(100)
, tmp_Surname NVARCHAR(100)
, tmp_HomeEmail NVARCHAR(300)
, tmp_MobileNumber NVARCHAR(100)
--- Ratings
, tmp_HomeEmail_Rating INT
--- Groupings
, tmp_GroupNumber INT
)
;WITH cteDupes AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY personHomeEmail ORDER BY personID DESC) AS RND,
ROW_NUMBER() OVER(PARTITION BY personHomeEmail ORDER BY personId) AS RNA,
p.personID, p.PersonFirstName, p.PersonSurname, p.PersonHomeEMail
, personMobileTelephone
FROM tblCandidate c INNER JOIN tblPerson p ON c.candidateID = p.personID
)
INSERT INTO @tmp_Duplicates
SELECT PersonID, PersonFirstName, PersonSurname, PersonHomeEMail, personMobileTelephone
, 10, RND
FROM cteDupes
WHERE RNA + RND > 2
ORDER BY personID, PersonFirstName, PersonSurname
SELECT * FROM @tmp_Duplicates
这给了我想要的结果,但是组号没有显示我需要的方式:
我需要的是每个组都是增量值: