Sql server 为表中每个记录的字段添加1
我有一张桌子记录:Sql server 为表中每个记录的字段添加1,sql-server,procedure,Sql Server,Procedure,我有一张桌子记录: ID Name RecordId GroupField 1 asd 1 Group1 2 asd2 1 Group1 3 asd3 1 Group1 4 asd4 1 Group2 5 asd5 1 Group2 我需要的是一个查询,根据我的记录所在的组更新RecordId列。结果如下所示: ID Name RecordId GroupField 1 asd 1 Group1
ID Name RecordId GroupField
1 asd 1 Group1
2 asd2 1 Group1
3 asd3 1 Group1
4 asd4 1 Group2
5 asd5 1 Group2
我需要的是一个查询,根据我的记录所在的组更新RecordId列。结果如下所示:
ID Name RecordId GroupField
1 asd 1 Group1
2 asd2 2 Group1
3 asd3 3 Group1
4 asd4 1 Group2
5 asd5 2 Group2
RecordId必须从1开始递增,并且每个组都需要重置并从1开始。试试这个
;With CTE as
(
select *
,RANK() over (partition by GroupField order by ID) as RnK
from myTableSort
)
update myTableSort set RecordID = CTE.RnK
from CTE where CTE.ID = myTableSort.ID
您可以尝试使用
差不多
;WITH Vals AS (
SELECT ID, ROW_NUMBER() OVER (PARTITION BY GroupField ORDER BY ID) NewID
FROM Table1
)
UPDATE Table1
SET RecordID = NewID
FROM Table1 t INNER JOIN
Vals v ON t.ID = v.ID