向重复的sql行添加唯一的id号

ogsagwnx  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(353)

我把下表叫做 TestTable 需要更新 MsgNum 列具有按日期列排序但按 JobNum .

JobNum | MsgNum | Date 
320    | 0      | 2020-04-10 
320    | 0      | 2020-06-11 
320    | 0      | 2020-06-12 
330    | 0      | 2020-04-10 
330    | 0      | 2020-06-11 
330    | 0      | 2020-06-12

下面是我需要结束的。

JobNum | MsgNum | Date 
320    | 1      | 2020-04-10 
320    | 2      | 2020-06-11 
320    | 3      | 2020-06-12 
330    | 1      | 2020-04-10 
330    | 2      | 2020-06-11 
330    | 3      | 2020-06-12

我有下面的,似乎工作,以产生身份证号码,但吸吮如何更新表 MsgNum 具有id号的列。

SELECT [JobNum], [MsgNum]
    , ROW_NUMBER() OVER (PARTITION BY [JobNum] ORDER BY [Date]) AS id
FROM [dbo].[TestTable]
2lpgd968

2lpgd9681#

你可以用 row_number() 以及一个可更新的公共表表达式:

with cte as (
    select msgNum, row_number() over(partition by jobNum order by Date) rn
    from mytable
)
update cte set msgNum = rn

相关问题