繁体   English   中英

连接两个表-Oracle

[英]Joining two tables - Oracle

我有两个数据集:A和B

数据集A:

indiv_id      January     
1000068000004   1   
1000068000011   1   
1000068000012   1

数据集B:

indiv_id       March     
1000068000003   1   
1000068000011   1   
1000068000015   1

所需结果:

Indiv_id      January    March    
1000068000003  null       1    
1000068000004   1        null  
1000068000011   1         1   
1000068000012   1        null    
1000068000015  null       1

如何连接表,以便同时拥有两个列表中的所有Indiv_IDs和它们在与特定数据集不同的列中的值?

谢谢

您可以使用full join

select indiv_id, a.january, b.march
from a full join
     b
     using (indiv_id);

using子句使此操作特别方便,因为您无需担心select中的任何coalesce()

您有3种情况要处理:两个数据集中都有ID,ID仅存在于数据集A中,或者ID仅存在于数据集B中。您无法通过select ... from dataset_A left join dataset_B ...来解决这个select ... from dataset_A left join dataset_B ...因为您将获得前两种情况,但没有第三种。

您需要定义一个视图,该视图为您提供两个数据集的所有ID,然后左键联接到每个数据集:

with all_IDs as (select indiv_ID from dataset_A union select indiv_ID from dataset_B)
select indiv_ID, january, march
from all_IDs
left join dataset_A using (indiv_ID)
left join dataset_B using (indiv_ID)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM