2017-09-17 108 views
-1

我遇到了这个问题,经过周围和周围我最终陷入了困境。我有一些共同的列两个表,我想将它们合并为一个:T-SQL:加入两张表

enter image description here

我不是在寻找的代码一定而是为了对答案的一些指导。

+0

请张贴预期结果,实际结果为文本,而不是图像 – TheGameiswar

+0

问题更新 – aeroalpha

+0

'UNION ALL'是一个好的开始。然后你需要聚合来合并行 –

回答

1

您可以通过full join-ing这两个表以及使用​​3210和case得到您想要的结果如下。

SELECT COALESCE(t1.user1, t2.user1) AS "User", 
     t1.monday, 
     CASE 
     WHEN t2.tuesday = t1.monday THEN NULL 
     ELSE t2.tuesday 
     END as Tuesday 
FROM table1 t1 
     FULL JOIN table2 t2 
       ON t1.user1 = t2.user1 
ORDER BY "user"; 

结果:

User monday Tuesday 
---------------------- 
user1  gym  run 
user1  run  
user2  gym  run 
user3    gym 
user4    gym 
user5  gym  

您可以赫克演示here

+0

这真的有很大的帮助,但有一个问题:当用户1在星期一和星期二跑步和健身时,星期二的一个练习被CASE删除。如果案件被删除,那么我复制行。 – aeroalpha

+0

@aeroalpha:我处理了所提供的示例数据。如果您正在寻找不同数据集的答案,请添加另一个问题。我们将很乐意提供帮助。谢谢 :-) – zarruq