我在表中有以下列,它具有相同的字符串值。我需要替换相同的字符串,例如:
+----+-------------+
| ID | Column_Name |
+----+-------------+
| 1 | Imports |
| 2 | Imports |
| 3 | Exports |
| 4 | Exports |
+----+-------------+
需要替换为:
+----+-------------+
| ID | Column_Name |
+----+-------------+
| 1 | Imports1 |
| 2 | Imports2 |
| 3 | Exports1 |
| 4 | Exports2 |
+----+-------------+
有没有办法在SQL查询中实现这一点?
这样做的目的是我使用 'Column_Name' 字符串 动态SQL中的值替换因为的Integer值 相同的名称列的不同值没有得到 替换。
答案 0 :(得分:2)
你可以试试这个:
UPDATE Your_Table
SET Name = Name + CAST(RN AS varchar(1)) FROM -- varchar(10)
(SELECT ROW_NUMBER() OVER(PARTITION BY Name ORDER BY ID) AS RN
FROM Your_Table) AS A
答案 1 :(得分:2)
这是一个可以实现你想要的东西。它执行两个内部查询的并集,每个查询按照原始Import
值的顺序对来自1的Export
和ID
记录进行编号。外部查询选择ID
以及新的Column Name
。
SELECT ID, CONCAT([Column Name], NewID)
FROM
(
SELECT ID, [Column Name],
ROW_NUMBER() OVER (ORDER BY ID ASC) AS NewID
FROM your_table
WHERE [Column Name] = 'Exports'
UNION ALL
SELECT ID, [Column Name],
ROW_NUMBER() OVER (ORDER BY ID ASC) AS NewID
FROM your_table
WHERE [Column Name] = 'Imports'
)
ORDER BY ID ASC