0

同じスキーマを持つ 2 つのテーブルがあります。すべてのフィールドのユニオンを作成したいのですが、すべてのフィールドではなく一部のフィールドが等しいことに基づいて重複を除外したいと考えています。SQL Server (2008r2) でこれを達成する最善の方法は何ですか?

この種の回答が表示されますが、より良いオプションはありますか?

助けてくれてありがとう。

4

1 に答える 1

1

@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
于 2012-06-08T18:07:37.517 に答える