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