обновление добавочных значений в столбец SQL

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я ищу некоторую помощь со следующим запросом:

У меня есть куча строк с ТИПОМ столбца, VERSION — однако в некоторых случаях версия была перепутана, поэтому я хочу ее переписать.

В принципе, теперь это выглядит так:

 Type, Version
A, 0
A, 0
A, 1
A, 2
B, 1
B, 3
  

Я хочу, чтобы это выглядело так:

 Type, Version
A, 0
A, 1
A, 2
A, 3
B, 0
B, 1
  

Любая помощь будет с благодарностью,
Спасибо

Комментарии:

1. Как вы узнаете, какая запись «A, 0» должна стать «A, 1»? Если у вас есть надежный способ упорядочить их, решение будет намного проще.

2. Подойдет любой из них, поскольку я не могу точно знать, какая из них действительно является более ранней версией.

Ответ №1:

 WITH T AS
(
SELECT *,
       ROW_NUMBER() OVER (PARTITION BY Type ORDER BY Version) - 1 AS V
FROM YourTable       
)
UPDATE T 
SET Version = V
  

Комментарии:

1. 1 — Я пропустил -1 в конце ROW_NUMBER(), когда я опубликовал свой комментарий.

2. @JNK — Тогда этого не было. Я заметил начало с нуля сразу после публикации.