Как изменить порядок строк, которые вышли из последовательности при сохранении целостности данных? - PullRequest
0 голосов
/ 03 апреля 2020

Пример данных

**Current Data:**
ID               Version  Col1   Col2   Col3    Col4
5587138            1       C    Car     Gas     D
6460704            2       B    Bus     Diesel  A
6537612            3       B    Bus     Diesel  B
6264608            4       T    Truck   Gas     D

**2nd Result:**
ID                Version  Col1   Col2   Col3   Col4
5587138            1        C     Car    Gas     D
*6264608*          2        B     Bus    Diesel  A
*6460704*          3        B     Bus    Diesel  B
*6537612*          4        T     Truck  Gas     D

Мне нужно переставить (обновить) вышеприведенные данные так, чтобы я получил 2-й результат. Я должен сохранить данные для Col1, Col2, Col3 и Col4 с их соответствующими версиями. Ваша помощь очень нужна и ценится.

1 Ответ

0 голосов
/ 03 апреля 2020

Если ваша версия начинается с 1,2,3 ... тогда вы можете использовать аналитическую функцию ROW_NUMBER, чтобы определить номер строки на основе идентификатора и обновить идентификатор для связанной версии следующим образом:

UPDATE YOUR_TABLE Y
SET ID = (SELECT ID FROM 
            (SELECT ID, 
                    ROW_NUMBER() OVER (ORDER BY ID) AS RN 
               FROM YOUR_TABLE YIN)
          WHERE RN = Y.VERSION);
...