2012-12-10 109 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