我一直在努力比较两个几乎相同的表,并在第二个表中更新/添加结果。这是我正在使用的两个表。 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
答案 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