2012-12-10 111 views
-4

我正在使用SQL Server 2008 R2。我有一个表DESTI重复记录的SQL解决方案

CODE_DESTI ENTERPRISE 
----------------------- 
1   xx 
1   yy 
12   pp 
12   oo 
12   ll 

如何更新重复CODE_DESTI有自动递增1号它

CODE_DESTI ENTERPRISE 
----------------------- 
11   xx 
12   yy 
121   pp 
122   oo 
123   ll 
+0

什么RDBMS你正在用吗?你怎么知道追加号码不会与现有记录冲突? (事实上​​在你的例子中,除了'12'需要去重的事实之外) –

+0

我正在使用SQL 2008 R2 – user609511

+0

我不清楚你的使用场景。您在DESTI表中有五条记录,并且当您尝试插入重复行时,您想要插入一个具有不同CODE_DESTI值的行吗? – neontapir

回答

1

你可以做到这一点使用了窗口函数后:

SELECT 
    CODE_DESTI + CAST(RANK() AS varchar) OVER (PARTITION BY CODE_DESTI ORDER BY ENTERPRISE) AS CODE_DESTI, 
    ENTERPRISE 
FROM DESTI 
+0

'||'是标准的SQL,但不支持MS SQL Server,它使用字符串连接的'+'(因此也需要一个转换到一个字符串类型)。 – hvd

+0

@hvd:谢谢。不知道,我认为'||'也被支持。无论哪种方式,我已经改变了它,但由于我没有表定义,我将把字符串抛出。它可能已经是一个字符串;) – Wolph

+0

我相当肯定'RANK()'的结果不会是:) – hvd