我有一張表格,我正在添加一個新列以指示行號。此表沒有關聯任何主鍵,因此我不確定如何使用行號值填充它。在沒有主鍵的表格的新列上填充行號
這是我在CTE中放置的代碼,但在主表中我不知道如何關聯Id列。 Id是我需要開始編號的新添加的列。
;with CTE_RowNum as (
select
ROW_NUMBER() OVER (ORDER BY NEWID()) AS RowId
,Id
from dbo.Test
)
我可以分區上某些列的表,但我怎麼會加入與原始表這樣的標準是什麼?
編輯 - 這是我所指的模式。 Id是我想用行號填充的新添加的列。名稱和錯誤列一起形成唯一性。
預計產出將是 -
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')
是否所有行處於表格不同?如果是這樣,你可以嘗試'BINARY_CHECKSUM(*)'而不是'NEWID()'。例如。 SELECT *,RowId = ROW_NUMBER()OVER(ORDER BY BINARY_CHECKSUM(*))FROM sys.objects' – Ingaz
您能證明充足的數據和預期的結果嗎? –