SQL添加数字列

时间:2017-12-28 22:39:58

标签: tsql

我们说我有一张桌子:

Table1
ID | Table2_ID | Title
1   1           Breaking_Bad
2   1           Breaking_Bad
3   2           Simpsons
4   1           House_Of_Cards

我想通过添加' _XX'来重命名标题。 (其中XX是数字)仅适用于那些具有相同标题且具有相同Table2_ID的条目。 所以最终结果将是

Table1
ID | Table2_ID | Title
1   1           Breaking_Bad_01
2   1           Breaking_Bad_02
3   2           Simpsons
4   1           House_Of_Cards

我如何使用TSQL执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以使用

执行此操作
WITH T
     AS (SELECT *,
                COUNT(*) OVER (PARTITION BY Table2_ID, Title)                 AS Cnt,
                ROW_NUMBER() OVER (PARTITION BY Table2_ID, Title ORDER BY ID) AS RN
         FROM   Table1)
UPDATE T
SET    Title = Title + '_' + FORMAT(RN, 'D2')
WHERE  Cnt > 1;

SQL Fiddle

或者如果您使用的是没有FORMAT

的版本
SET    Title = Title + CASE WHEN RN < 10 THEN '_0' ELSE '_' END + CAST(RN AS VARCHAR(10))

答案 1 :(得分:0)

这会在SQL Server中运行吗?填充到2位数字很简单。

UPDATE TABLE1 A SET TITLE = TITLE + '_' + (SELECT COUNT(*) FROM TABLE1 B WHERE A.TITLE=B.TITLE AND A.ID<=B.ID) WHERE A.ID IN (SELECT B.ID FROM TABLE1 B 
WHERE A.Id<>B.ID and A.TITLE=B.TITLE)