可能是一个愚蠢的问题,但有时对于经验丰富的人来说,似乎不可能的事情变得容易。
我有一个包含41列和大约20000条记录的表格,并且我已经要求根据必须唯一的16个字段的组合来消除重复项。我可以使用COUNT函数根据这些字段查找包含两个或更多相同记录实例的记录。
我的问题是,如果计数大于1,SQL是否有能力更改字段的值?我已经制作了一个子查询,但是我能想到的每个解决方案都会将重复项更改为相同的新值 - 我无法弄清楚如何更改其中一个重复项。
我可能正在咆哮错误的树,但我只是想我会问。谢谢你的帮助。
答案 0 :(得分:0)
您可以使用CTE来完成您对row_number()的要求。基本上,您在16列定义的每个分区中分配一个rownumber。然后将复制字段设置为该rownumber。请注意,逻辑在我的示例中非常基础,因为我们对您的数据知之甚少。
;with cte
as
(
select *,
row_number() over(partition by col1, col2,... order by col1) as dupCount
from yourTable
)
update cte
set [replicate] = dupCount