同じスキーマを持つ 2 つのテーブルがあります。すべてのフィールドのユニオンを作成したいのですが、すべてのフィールドではなく一部のフィールドが等しいことに基づいて重複を除外したいと考えています。SQL Server (2008r2) でこれを達成する最善の方法は何ですか?
この種の回答が表示されますが、より良いオプションはありますか?
助けてくれてありがとう。
同じスキーマを持つ 2 つのテーブルがあります。すべてのフィールドのユニオンを作成したいのですが、すべてのフィールドではなく一部のフィールドが等しいことに基づいて重複を除外したいと考えています。SQL Server (2008r2) でこれを達成する最善の方法は何ですか?
この種の回答が表示されますが、より良いオプションはありますか?
助けてくれてありがとう。
@Timが言うように、パーティションで使用されていないすべてのフィールドの違いを破棄するだけですが、RANK()関数を使用してそれを実行できる場合があります。以下では、BとCが共通の6つの行がある場合、列AとDの値に関係なく、そのうちの1つだけが存続します。
SELECT *
FROM (
SELECT A, B, C, D,
RANK() OVER(PARTITION BY B, C ORDER BY B, C) AS MYRANK
FROM (
SELECT A, B, C, D
FROM TABLE_A
UNION
SELECT A, B, C, D
FROM TABLE_B
) T1
WHERE T1.MYRANK = 1