我有一个表格,我在这里添加一个新列来表示行号。此表没有关联任何主键,因此我不确定如何使用行号值填充它。
这是我在CTE中放入的代码,但在主表中我不知道如何关联Id列。 Id是我需要开始编号的新添加的列。
;with CTE_RowNum as (
select
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
,Id
from dbo.Test
)
我可以在某些列上对表进行分区,但是如何将这些条件与原始表一起加入?
编辑 - 这是我所指的架构。 Id是新添加的列,我想将其作为行号填充。 Name和Error列一起形成唯一性。
预期输出将是 -
1,ABC,Time Out Issue
2,ABC,Page Not Found
3,DEF,Page Not Found
顺序没关系,我的意思是最后一行可以有'1'而其他行可以有其他值。
另一种方法我可以想到将数据重新填充到插入了Identity的新表中,但只是想知道有没有办法通过T-SQL实现这一点?
CREATE TABLE #Test
(
Id INT
,Name NVARCHAR(100)
,Error NVARCHAR(100)
)
INSERT INTO #Test (Name,Error) VALUES
('ABC','Time Out Issue')
,('ABC','Page Not Found')
,('DEF','Page Not Found')
答案 0 :(得分:4)
这很简单:
;WITH cte AS
(
SELECT Id, ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
FROM #test
)
UPDATE cte
SET Id = RowId