#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 — Тогда этого не было. Я заметил начало с нуля сразу после публикации.