2014-05-08 16 views
0

我有多个结果集(它们实际上是内联视图的结果),每个结果集都提供了不同的属性,我想在两个ID上将它们组合在一起。使用Oracle SQL来完成此操作的最有效方法是什么?使用Oracle SQL组合这些结果的最佳方法是什么?

我不认为我可以只使用UNION,因为那样我会得到多行具有相同的两个ID和它们之间分布的属性 - 我希望具有相同拖拽ID的所有行在COLLAPSE中排成一行。

实施例:

表A:

MAIN_ID SUB_ID ATTRIB_A ATTRIB_B 
1  100  100  Red 
1  101  150  Green 
2  300  125  Orange 

表B:

MAIN_ID SUB_ID ATTRIB_C ATTRIB_D 
1  101  High  25 
2  120  Medium  10 
2  300  Low  20 

我想要写的查询,其中所述结果集看起来像这样:

MAIN_ID SUB_ID ATTRIB_A ATTRIB_B ATTRIB_C ATTRIB_D 
1  100  100  Red  <NULL>  <NULL> 
1  101  150  Green  High  25 
2  120  <NULL>  <NULL>  Medium  10 
2  300  125  Orange  Low  20 

但是如何?

回答

1

你想要一个完全外部联接:

select coalesce(a.main_id, b.main_id) as main_id, 
     coalesce(a.sub_id, b.sub_id) as sub_id, 
     a.attrib_a, a.attrib_b, b.attrib_c, b.attrib_c 
from tableA a full outer join 
    tableB b 
    on a.main_id = b.main_id and a.sub_id = b.sub_id; 
+0

是啊,谢谢!我认为诀窍是我错过了合并,所以当尝试使用外连接时,我的结果看起来不对!这使它完美的工作! – Trant

相关问题