Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL:要使用尝试号更新我的表。如果表中重复某个键(键的组合)_Sql Server_Database - Fatal编程技术网

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

谢谢你让我开心。