比较两个表并在第二个表中添加结果

时间:2016-10-04 19:02:41

标签: sql-server

我一直在努力比较两个几乎相同的表,并在第二个表中更新/添加结果。这是我正在使用的两个表。 Person1 (ID,Name,PHNumber)和 Person2 (ID,Name,PHNumber,IsActive)。

注意: person1总是比person2更多/更少/相同的行.Person1是引用表我们需要添加/删除person1 int中出现/不出现的行到person2。 我使用的是Microsoft SQL Server管理工作室。

案例1:如果比较结果有更多行(假设person1有10个,person2有8个),那么我们需要将这些(2个)添加到person2并为这些行保留IsActive-1。

案例2:如果比较结果有差异(假设person1有10但person2有20个)那么我们需要找到那些delta 10rows并为那些10个保持IsActive-0。

希望查询清晰并期待您的宝贵解决方案。谢谢。

D

1 个答案:

答案 0 :(得分:0)

如果你还在寻找或回答,你可以尝试这样......

;WITH cte
AS (SELECT
    COALESCE(p1.id, p2.id) AS id,
    COALESCE(p1.name, p2.name) AS name,
    COALESCE(p1.phnumber, p2.phnumber) AS phnumber,
    CASE WHEN p1.name IS NULL THEN 0 ELSE 1 END AS IsActive
FROM Person1 p1
FULL JOIN person2 p2
    ON p1.name = p2.name
    AND p1.phnumber = p2.phnumber)
SELECT
    ROW_NUMBER() OVER (ORDER BY id, phnumber) AS id,
    name, phnumber, IsActive
FROM cte