2016-07-25 73 views

回答

2

試試這個

UPDATE TBL 
SET Name = A.Name 
FROM 
(
    SELECT 
     Id, 
     Name + CAST(ROW_NUMBER() OVER (PARTITION BY Name ORDER BY (SELECT NULL)) AS NVARCHAR(500)) AS NAME, 
     Count 
    FROM 
     TBL 
    WHERE 
     NAME IN 
     (
      SELECT T.NAME FROM TBL T 
      GROUP BY T.NAME 
      HAVING COUNT(1) > 1 
     ) 

) A 
WHERE 
    TBL.Id = A.ID 
0

做試試這個:

Select Name + convert(varchar(2), row_number()over(partition by Name order by Name)) 
From tablename 
0

你只要試試這個。

Declare @i int = 1 

update yourtable 
set ID = @i , @i = @i + 1 
0

選擇基於NEER代碼的代碼,添加前導零,在MSSQL數據庫上測試。

SELECT 
    Id, 
    Name, 
    Name + RIGHT('00'+CAST(ROW_NUMBER() OVER (PARTITION BY Name ORDER BY (SELECT Name)) AS NVARCHAR(MAX)),2) AS Updatedname 

FROM 
    tablename 
WHERE 
    Name IN 
    (
     SELECT T.NameFROM tablename T 
     GROUP BY T.Name 
     HAVING COUNT(Name) > 1 
    ) 
GROUP BY Name,Id 
ORDER BY Name 
+0

請給樣品瞭解得更清楚,因爲你給了你的專欄。 – Ajay2707

+0

我已經爲您更新了與您使用的列名相同的代碼。只需用你自己的表來替換tablename的值即可 –

相關問題