2017-02-22 15 views
2

У меня есть таблица со следующими значениями:SQL: Хотите обновить свою таблицу с попыткой п, если ключ (комбинация клавиши) повторяется в таблице

Enrollment_No |S_Code |Reg_Code |Grade|Attempt 
---------------------------------------------------- 
20170|ABC101 |1701  |B | 
20170|ABC102 |1701  |F | 
20170|ABC103 |1701  |C | 
20170|ABC104 |1701  |B | 
20170|ABC105 |1701  |D | 
20170|ABC106 |1702  |A | 
20170|ABC107 |1702  |B | 
20170|ABC108 |1702  |C | 
20170|ABC109 |1702  |D | 
20170|ABC110 |1702  |B | 
20170|ABC102 |1711  |C | 
20170|ABC109 |1711  |C | 

Before Insert Table Values

Я хочу, чтобы обновить (SQL Query) выше таблицы с попыткой нет, если же enlrollment_no повторил S_code в высшей registration_code мой финальный стол будет как ниже

Enrollment_No |S_Code |Reg_Code |Grade|Attempt 
---------------------------------------------------- 
20170|ABC101 |1701  |B |1 
20170|ABC102 |1701  |F |1 
20170|ABC103 |1701  |C |1 
20170|ABC104 |1701  |B |1 
20170|ABC105 |1701  |D |1 
20170|ABC106 |1702  |A |1 
20170|ABC107 |1702  |B |1 
20170|ABC108 |1702  |C |1 
20170|ABC109 |1702  |D |1 
20170|ABC110 |1702  |B |1 
20170|ABC102 |1711  |C |2 
20170|ABC109 |1711  |C |2 

enter image description here

ответ

0

Вы можете попробовать выполнить встроенное обновление с помощью SQL Server ROW_NUMBER() для генерации значений для этой попытки.

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 
+0

Спасибо! вы сделали мой день. –