SSIS将数字添加到列中的重复值以使其唯一

时间:2018-02-23 21:01:51

标签: c# sql-server ssis

我的数据只在一列中有一些重复记录。我希望在通过脚本组件运​​行数据后过滤它们以获取所有重复值并将增量数字附加到它们以使它们是唯一的。

是否可以使用聚合组件?
例如,我的数据可能如下所示:

Pre-Number Append

Column1和2用作我的主要键,因此我需要Column2使用它的值更加独特。 将数字附加到重复项后,它看起来像这样(注意' C'没有数字):

Post-Number Append

1 个答案:

答案 0 :(得分:3)

select tt.*, tt.col2 + '.' + rn  
from ( select t.* 
            , row_number() over (partition by col2 order by ?) as rn
            , count(*) over (partition by col2) as cnt
     ) tt 

我注意到C没有号码。我会把这个练习留给你。提示使用cnt。

DECLARE @a TABLE (col2 varchar(20));
INSERT INTO @a VALUES ('a'), ('a') , ('a'), ('b'), ('c'), ('c');

select aa.*, aa.col2 + '.' + cast(rn as varchar)   
from ( select a.*
            , row_number() over (partition by col2 order by col2) as rn
            , count(*)     over (partition by col2) as cnt 
         from @a a 
     ) aa 
where aa.cnt > 1
order by aa.col2;

update aa 
set aa.col2 = aa.col2 + '.' + cast(rn as varchar)
from ( select a.*
            , row_number() over (partition by col2 order by col2) as rn
            , count(*)     over (partition by col2) as cnt 
         from @a a 
     ) aa 
where aa.cnt > 1; 

select * from @a a
order by a.col2;