VKa*_*hik 2 t-sql sql-server sql-server-2012
我有一个表,我在其中添加了一个新列来指示行号。该表没有任何关联的主键,所以我不确定如何用行号值填充它。
这是我放在 CTE 中的代码,但在主表中我不知道如何关联 Id 列。Id 是我需要开始编号的新添加的列。
;with CTE_RowNum as (
select
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
,Id
from dbo.Test
)
Run Code Online (Sandbox Code Playgroud)
我可以在某些列上对表进行分区,但是如何将这些条件与原始表连接起来?
编辑 - 这是我所指的架构。Id 是我想用行号填充的新添加的列。Name 和 Error 列一起形成唯一性。
预期输出将是 -
1,ABC,Time Out Issue
2,ABC,Page Not Found
3,DEF,Page Not Found
Run Code Online (Sandbox Code Playgroud)
顺序无关紧要,我的意思是最后一行可以有“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')
Run Code Online (Sandbox Code Playgroud)
这真的很简单:
;WITH cte AS
(
SELECT Id, ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
FROM #test
)
UPDATE cte
SET Id = RowId
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |