加入两个表 - Oracle

问题描述 投票:0回答:2

我有两个数据集: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

我如何加入表格,以便我拥有BOTH列表中的所有Indiv_IDs及其与特定数据集不同的列中的值?

谢谢

sql oracle
2个回答
2
投票

你可以使用full join

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

using条款使这特别方便,因为你不需要担心coalesce()中的任何selects。


0
投票

您需要处理3个案例:ID在两个数据集中,ID仅在数据集A中,或者ID仅在数据集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)
© www.soinside.com 2019 - 2024. All rights reserved.