【发布时间】:2017-06-01 15:13:52
【问题描述】:
我目前有一个 SQL 查询,似乎一次只占用一列并搜索欺骗。
因此,例如,如果我们有两条 FIRST = 'Charles' 的记录,但它们的姓氏不同,它仍会将其视为重复。我希望我的重复查询确保所有列完全匹配以将其计为重复。
这是我的查询
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;
此表中的数据大多只是地址数据。典型的 First/Last/Middle Address/City/State/Zip 以及其他两个字段。
我希望能够对 N 个重复项中的一个进行 SET(如果有 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_CODES 列设置为 D。
目前它的工作方式是,如果我们有的话
ZYTA B ZAJACZKOWSKA 100 Malberry Ln TX 73301 052 435345543345 A 003 D
和
ZYTA Stevenson 100 Meow Ln 73301 052 435345543345 A 003 D
这将被视为重复,它会将 Zyta Stevenson 编码为重复,即使它与第一个不同。
【问题讨论】:
-
添加一些示例表数据和预期结果 - 以及格式化文本。
-
您的查询似乎符合您的要求。
-
@GordonLinoff 我觉得它在过去工作过,但由于某种原因,这次它似乎不能正常工作。知道为什么吗?
-
@jarlh 查看更新。
-
@rohanharrison:查看此链接以改进问题:spaghettidba.com/2015/04/24/…
标签: sql sql-server select sql-update common-table-expression