如何使SQL重复查询确保所有列都匹配?
我目前有一个SQL查询,它似乎一次只取一列并搜索重复项 所以,例如,如果我们有两个记录,第一个='Charles',但他们的姓氏都不同,它仍然会将其视为重复。我希望我的duplicates查询确保所有列完全匹配,以将其计为一个副本 这是我的问题如何使SQL重复查询确保所有列都匹配?,sql,sql-server,select,sql-update,common-table-expression,Sql,Sql Server,Select,Sql Update,Common Table Expression,我目前有一个SQL查询,它似乎一次只取一列并搜索重复项 所以,例如,如果我们有两个记录,第一个='Charles',但他们的姓氏都不同,它仍然会将其视为重复。我希望我的duplicates查询确保所有列完全匹配,以将其计为一个副本 这是我的问题 WITH cte AS (SELECT *, Row_Number() OVER(partition BY fips_county_code, last, suffix, first, birthdate Ord
WITH cte
AS (SELECT *,
Row_Number() OVER(partition BY fips_county_code, last, suffix, first, birthdate Order by (select null)) AS Rn
FROM WORK)
UPDATE cte
SET BAD_CODES = Isnull(BAD_CODES, '') + 'D'
WHERE RN > 1;
此表中的数据主要是地址数据。典型的第一个/最后一个/中间地址/城市/州/邮政编码,可能还有两个其他字段
我希望能够设置N个副本中的一个(如果有4个副本,则忽略第一个副本并设置其他副本)
例如,如果我们有
ZYTA B ZAJACZKOWSKA 100 Malberry Ln TX 73301 052 435345543345 A 003 D
ZYTA B ZAJACZKOWSKA 100 Malberry Ln TX 73301 052 435345543345 A 003 D
及
我们希望忽略它的第一次出现,但将第二个BAD_code列设置为D
目前的工作方式是,如果我们有
ZYTA B ZAJACZKOWSKA 100 Malberry Ln TX 73301 052 435345543345 A 003 D
ZYTA B ZAJACZKOWSKA 100 Malberry Ln TX 73301 052 435345543345 A 003 D
及
这将被视为一个副本,它将Zyta Stevenson编码为一个副本,即使它与第一个不同。我解决了我的问题。我在帖子中遗漏的一件事是,我需要按DS='VOTER'过滤这些记录,但我把它放在WHERE RN>1的最后一行。这需要进入上面的选择 这就是我最后使用的
WITH cte
AS (SELECT *,
Row_Number() OVER(partition BY fips_county_code, last, suffix, first, birthdate Order by (select null)) AS Rn
FROM WORK
WHERE DS = 'VOTER')
UPDATE cte
SET BAD_CODES = Isnull(BAD_CODES, '') + 'D'
WHERE RN > 1;
添加一些示例表数据和预期结果,以及格式良好的文本。您的查询似乎可以执行您想要的操作。@GordonLinoff我觉得它在过去一直有效,但由于某种原因,这次似乎无法正常工作。知道原因吗?@jarlh-See-updated@rohanharrison:查看此链接以改进问题: