Как удалить все дубликаты записей, кроме одного в SQL Server

Я попытался удалить несколько записей без одного

Входные данные:

Id Temp P_TempId ------------------------------------ AN #1001#.Test 5001,8001 AN #1001#.Test 5001,8001 AN #1002#.Test 5001,4001,7001,8001 AN #1002#.Test 5001,4001,7001,8001 AN #1002#.Test 5001,4001,7001,8001 

Вывод:

  Id Temp P_TempId --------------------------------------- AN #1001#.Test 5001,8001 AN #1002#.Test 5001,4001,7001,8001 

Используя общее табличное выражение с row_number() для номера каждого набора Id_Temp, P_TempId и удалите номера с номером больше 1.

 ;with cte as ( select * , rn = row_number() over ( partition by Id, Temp, P_TempId order by (select 1) ) from t ) delete from cte where cte.rn > 1 

или без cte, используя вместо этого стандартный подзапрос:

  delete s from ( select * , rn = row_number() over ( partition by Id, Temp, P_TempId order by (select 1) ) from t ) as s where s.rn > 1 

демо-версия рекстера: http://rextester.com/CWO44915

возвращает:

 +----+-------------+---------------------+ | Id | Temp | P_TempId | +----+-------------+---------------------+ | AN | #1001#.Test | 5001,8001 | | AN | #1002#.Test | 5001,4001,7001,8001 | +----+-------------+---------------------+ 
Interesting Posts

хранится proc от excel с параметрами

Вопросы о порядке сортировки с использованием XQuery в SQL Server

Как получить имя базы данных SQL Server без входа?

Hard Coding или Magic Literals улучшают производительность в хранимых процедурах SQL Server?

Назначение SQL NULL для строки SSIS – ошибка SSIS?

unescape diactrics в формате \ u0 (json) в ms sql (SQL Server)

SQL добавляет преобразование даты в существующий запрос

Почему резервная база данных прерывается анонимно в WPF с помощью c #?

Выполнить вывод sql-запроса в новый sql в стиле «для каждого»

LOAD DATA INFILE в визуальной студии с использованием SQL-сервера ERROR: «Конструкция или оператор SQL LOAD DATA не поддерживается»

Запись DataTable с переменными столбцами в таблицу базы данных

SQL Server 2008 R2 – сохранять результаты запроса в виде инструкции SQL, читаемой phpmyadmin?

ОБНОВИТЬ столбец с подзапросом

Повторяющаяся проверка в Sql

Не удается заставить powershell работать с сбоем подключения SQL Server

Давайте будем гением компьютера.