2014-02-07 87 views
0
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重复的唯一ID向每个ID添加字母

的副本有什么办法,我可以运行一个SQL查询,会发现重复和结束

例如添加了一封信让说有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 

感谢您的帮助,真正坚持这一

+0

我认为你需要删除你的SQL中的逗号之前的第二行和第三行的引号? – NickyvV

+0

更正感谢 – neeko

+0

为什么你会想加入这些专栏?此外,'SELECT'和'JOIN'不显示选择的相同列。例如。 't1。[批准代码]在SELECT中,'t1.ACCEPT'在JOIN中。 – NickyvV

回答

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 

你可以在你的查询中实现这个吗?

+0

感谢您的答复,但会实际更新表并插入字符? – neeko

+0

你想更新表吗?还是只是查看? 显示你做了什么?你被击中的地方? – KumarHarsh