Sql server SQL:要使用尝试号更新我的表。如果表中重复某个键(键的组合)
我有一个具有以下值的表:Sql server SQL:要使用尝试号更新我的表。如果表中重复某个键(键的组合),sql-server,database,Sql Server,Database,我有一个具有以下值的表: Enrollment_No |S_Code |Reg_Code |Grade|Attempt ---------------------------------------------------- 2017001234 |ABC101 |1701 |B | 2017001234 |ABC102 |1701 |F | 2017001234 |ABC103 |1701 |C | 20170
Enrollment_No |S_Code |Reg_Code |Grade|Attempt
----------------------------------------------------
2017001234 |ABC101 |1701 |B |
2017001234 |ABC102 |1701 |F |
2017001234 |ABC103 |1701 |C |
2017001234 |ABC104 |1701 |B |
2017001234 |ABC105 |1701 |D |
2017001234 |ABC106 |1702 |A |
2017001234 |ABC107 |1702 |B |
2017001234 |ABC108 |1702 |C |
2017001234 |ABC109 |1702 |D |
2017001234 |ABC110 |1702 |B |
2017001234 |ABC102 |1711 |C |
2017001234 |ABC109 |1711 |C |
我想更新(SQL查询)上面的表,如果相同的Enrollment\u no在更高的注册中重复一个S\u代码,我的最终表如下所示
Enrollment_No |S_Code |Reg_Code |Grade|Attempt
----------------------------------------------------
2017001234 |ABC101 |1701 |B |1
2017001234 |ABC102 |1701 |F |1
2017001234 |ABC103 |1701 |C |1
2017001234 |ABC104 |1701 |B |1
2017001234 |ABC105 |1701 |D |1
2017001234 |ABC106 |1702 |A |1
2017001234 |ABC107 |1702 |B |1
2017001234 |ABC108 |1702 |C |1
2017001234 |ABC109 |1702 |D |1
2017001234 |ABC110 |1702 |B |1
2017001234 |ABC102 |1711 |C |2
2017001234 |ABC109 |1711 |C |2
您可以尝试使用SQL Server的
行编号()
进行内联更新,以生成尝试的值
UPDATE x
SET x.Attempt = x.New_Attempt
FROM
(
SELECT Attempt,
ROW_NUMBER() OVER (PARTITION BY Enrollment_No, S_Code
ORDER BY Reg_Code) AS New_Attempt
FROM yourTable
) x
谢谢你让我开心。