Использование раздела для удаления дубликатов - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь выяснить, как я могу удалить дубликаты в таблице, сохраняя при этом любые изменения, которые могли произойти в разные даты. Итак, если вы возьмете мой пример ниже, то, что я до сих пор делал, - это разделение по разным спискам полей (исключая дату), упорядочение по возрастанию и затем ранжирование их соответственно. Примечание. У меня есть больше полей и строк, но я сократил их для удобства чтения.

Как правило, я просто запрашиваю строки с ранжированием = 1, потому что это возвращает мой действительно отличный список полей И в то время, когда он последний раз изменялся, что я и хочу. Однако я также пытаюсь зафиксировать уникальные изменения, которые произошли со временем. Видя, что штат вернулся к "Нью-Джерси" на 2017-03-11, я должен найти способ сохранить эту запись. Таким образом, мой окончательный набор результатов будет включать даты 2016-11-08, 2016-11-09 и 2017-03-11. Я застрял прямо сейчас, поэтому я был бы признателен за предложения. Спасибо!

Ranking = RANK() OVER (PARTITION BY
                                  [State]
                                 ,[DomicileCountryCode]
                                ,[DomicileCountryname]
                        ORDER BY FullDate ASC)

enter image description here

1 Ответ

0 голосов
/ 07 сентября 2018

Пройдя еще несколько поисков, я смог найти ответ на другом форуме. Надеюсь, это нормально, чтобы опубликовать ссылку здесь. По сути, он создает два разных поля ROW_NUMBER, которые можно сгруппировать, чтобы создать свое уникальное подмножество. Затем в моем верхнем утверждении SELECT я использую MIN, чтобы вернуть первую доступную дату для этих 3 подмножеств. Ссылка ниже предоставит наглядный пример. Очень элегантное и очень хорошее решение.

Изменение временного интервала T-SQL для группы по диапазону дат на сервере sql

...