データは複数のソースから発信されているため、重複するエントリを含む行のセットがあります。これらのデータソースの優先度を示す別の参照テーブルもあります。
このリストを重複排除するための最も効果的な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には、2つのソースの列が同じですが、データが異なる可能性があるため、価格が異なる可能性があります。課題は、最も優先度の高いソースからの行から価格(およびその他すべての情報)を取得する必要があることです。厄介なことに、私はすべてのソースからのすべてのアイテムのデータを持っているわけではありません。
したがって、アイテム1にはソースAとBからのデータが含まれている可能性がありますが、アイテム2にはソースBとCからのデータしか含まれていない可能性があります。したがって、削除は一意のアイテムごとに行う必要があります。