У меня есть набор строк, которые содержат повторяющиеся записи, потому что данные происходят из нескольких источников. У меня также есть отдельная справочная таблица, в которой указывается приоритет этих источников данных.
У кого-нибудь есть хорошие советы по наиболее эффективному t-SQL для дедупликации этого списка?
В основном у меня есть:
SELECT a.*, b.priority
FROM tableA as a
JOIN tableB as b
ON b.sourceId = a.sourceId
Я поместил это во временную таблицу, а затем удалил странным образом, который, как я полагаю, мог бы быть более эффективным.
DELETE ta
FROM #tmp ta
JOIN #tmp tb
ON ta.duplicateId = tb.duplicateId
WHERE ta.priority < tb.priority
Таблица A имеет одинаковые столбцы для двух источников, но данные могут отличаться - поэтому они могут иметь разные цены. Проблема в том, что я должен взять цену (и всю другую информацию) из строки, которая поступает из источника с наивысшим приоритетом. Чтобы усложнить ситуацию, у меня нет данных для каждого элемента из всех источников.
Таким образом, элемент 1 может иметь данные из источников A и B, в то время как элемент 2 может иметь их только из источников B и C. Таким образом, удаление должно происходить для каждого уникального элемента.