我有两个具有相同架构的表。我想创建所有字段的联合,但我想根据某些字段的相等性而不是所有字段来排除重复项。在SQL Server(2008r2)中实现此目的的最佳方法是什么?
I see this sort of answer,但还有更好的选择吗?
感谢您的帮助。
答案 0 :(得分:1)
您可以使用RANK()函数来完成它,但是@Tim说它只会丢弃分区中未使用的所有字段的任何差异。下面,如果您有六行共有B和C,则无论A和D列中的值如何,其中只有一行会存在:
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