重复的唯一ID会为每个ID添加字母

时间:2014-02-07 10:41:06

标签: sql sql-server tsql

SELECT                             
t1.[ACCEPT] + t1.[Price] + RIGHT(t1.[CARD],4) as 't1.UniqueID',
t2.[Approval Code] + t2.[Price] + RIGHT(t2.[Card Number],4) as 't2.UniqueID'
FROM table1 t1
INNER JOIN 
table2 t2 ON 
(t1.ACCEPT + t1.Price + RIGHT(t1.[CARD],4)) = 
(t2.[Approval Code] + t2.[Price] + RIGHT(t2.[Card Number],4))

如上所示,我将两个表连接在一起,这是我创建唯一ID来链接这两个表的唯一方法。 但是,在非常罕见的情况下,此ID有重复

有什么方法可以运行一个sql查询,找到重复项并在末尾添加一个字母

e.g。让我们说有3个重复(这是非常非常罕见的,可能不会发生,但为了论证)

t1.UniqueID        t2.UniqueID
00012136.006521    00012136.006521
00012136.006521    00012136.006521
00012136.006521    00012136.006521

我有一种方法可以循环并为两个表的ids添加一个字母

t1.UniqueID        t2.UniqueID
00012136.006521a    00012136.006521a
00012136.006521b    00012136.006521b
00012136.006521c    00012136.006521c

感谢您的帮助,真的坚持这个

1 个答案:

答案 0 :(得分:1)

小例子,

Declare @t table(UniqueID varchar(50))
insert into @t values('00012136.006521'),('00012136.006521')

;with cte as
(select *,ROW_NUMBER()over(order by UniqueID) rn  from @t)

select UniqueID+char(97+(rn-1)) from cte

你能在查询中实现这个吗?