Ich habe eine Reihe von Zeilen, die doppelte Einträge enthalten, da die Daten aus mehreren Quellen stammen. Ich habe auch eine separate Referenztabelle, die die Priorität dieser Datenquellen angibt.Tipps zum Deduplizieren einer Liste basierend auf der Priorität Spalte
Hat jemand gute Tipps für die effektivste t-SQL, um diese Liste zu deduplizieren? Grundsätzlich
ich habe:
SELECT a.*, b.priority
FROM tableA as a
JOIN tableB as b
ON b.sourceId = a.sourceId
Ich habe diese in eine temporäre Tabelle platzieren und dann auf eine seltsame Art und Weise zu löschen, die ich nehme an effizienter sein könnte.
Tabelle A hat die gleichen Spalten für die zwei Quellen, aber die Daten können sich unterscheiden - so können sie unterschiedliche Preise haben. Die Herausforderung besteht darin, dass ich den Preis (und alle anderen Informationen) aus der Zeile nehmen muss, die von der Quelle mit der höchsten Priorität kommt. Um die Sache zu komplizieren, habe ich keine Daten für jeden Gegenstand aus ALLEN Quellen.
So kann Element 1 Daten von Quelle A und B enthalten, während Element 2 es nur von Quelle B und C haben kann. Daher muss das Löschen auf einer Einzelartikel-Basis geschehen.
1) Wenn Sie sagen, Sie doppelte Einträge müssen am Ende sind alle Spalten in TableA die gleiche für zwei Zeilen, die doppelt sind? Wenn dies nicht der Fall ist und tableA.SourceId anders ist und Sie nur eine übereinstimmende Quell-ID in tableB haben, und Sie die Duplikate löschen möchten, dann führen Sie einfach delete on tableA statt der temporären Tabelle aus. –