我有两个具有相同架构的表。我想创建所有字段的联合,但我想根据某些字段的相等性排除重复项,但不是所有字段。在 SQL Server (2008r2) 中实现这一目标的最佳方法是什么?
我看到了这种答案,但是有更好的选择吗?
谢谢你的帮助。
我有两个具有相同架构的表。我想创建所有字段的联合,但我想根据某些字段的相等性排除重复项,但不是所有字段。在 SQL Server (2008r2) 中实现这一目标的最佳方法是什么?
我看到了这种答案,但是有更好的选择吗?
谢谢你的帮助。
您也许可以使用 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