比较两个表,并在第二个表中添加结果
我一直在比较两个几乎相同的表,并在第二个表中更新/添加结果。这里是我使用的两张桌子。 Person1(ID,姓名,PHNumber)和Person2(ID,姓名,PHNumber,IsActive)。比较两个表,并在第二个表中添加结果
注意: person1总是比person2少/相同的行.Person1是参考表,我们需要添加/删除person1 int中存在/不存在的行。 我正在使用Microsoft SQL Server管理工作室。
案例1:如果比较的结果有更多的行(让我们说PERSON1有10家,PERSON2具有8rows),那么我们需要添加这些(2rows)到PERSON2并保持IsActive-1的行。
案例2:如果比较结果有差异(比如说person1有10个,但是person2有20个),那么我们需要找到这些delta 10rows并为这10个行保留IsActive-0。
希望这个查询很清晰,并期待您的宝贵解决方案。谢谢。
Here Person1 does not contain newdata2 and contains newdata,newdata1 which are
new values after comparing, so we are giving IsActive-0 and IsActive-1
respectively.
Person1:
ID Name PHNumber
1 \t missouri 123
2 \t kansas 111
3 \t stlouise 234
4 \t california 456
5 \t india 888
6 \t srilanka 780
7 \t dallas 890
8 \t texas 1111
9 \t mario 1112
10 \t sister 7878
11 \t pontiac 8765
12 \t newdata \t 1234
13 \t newdata1 2345
Person2:
ID Name PHNumber IsActive
1 \t missouri 123 1
2 \t kansas 111 1
3 \t stlouise 234 1
4 \t california 456 1
5 \t india 888 1
6 \t srilanka 780 1
7 \t dallas 890 1
8 \t texas 1111 1
9 \t mario 1112 1
10 \t sister 7878 1
11 \t pontiac 8765 1
12 newdata2 987 1
RESULT: Person2:
ID Name PHNumber IsActive
1 \t missouri 123 1
2 \t kansas 111 1
3 \t stlouise 234 1
4 \t california 456 1
5 \t india 888 1
6 \t srilanka 780 1
7 \t dallas 890 1
8 \t texas 1111 1
9 \t mario 1112 1
10 \t sister 7878 1
11 \t pontiac 8765 1
12 newdata2 987 0
13 newdata \t 1234 1
14 \t newdata1 2345 1
如果你还在寻找或答案,你可以尝试这样的...
;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
谢谢Kannan Kndasamy,你的解决方案给了我正确的结果,但我需要在所有情况下进行测试。谢谢你花费你宝贵的时间给我.. – Virat
欢迎你... –
哪个匹配列(其中列中的值是相同的)使行“平等“到另一排? – granadaCoder
这很简单。请尝试使用合并/更新声明并返回给我们。 https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx –
MySQL或SQL服务器?你们都有标签......你的意思是? – pmbAustin