在Oracle中的一个选择查询中合并不同表的不同列

时间:2013-01-23 23:33:23

标签: oracle

我有两张桌子: 表:AA,A列,B列,C列,D列 表:BB列,E列,F G

我想得到的输出是这两个表的组合,如下所示:

A | B | C | D | E | F | G

我目前正在做以下事情:

Select * from ( 

( select A, B, C ,D from AA where some condition)

UNION ALL

( select E , F , G , NULL from BB where some condition) )

但它给我的输出只包含AA表中的A,B,C,D,而它没有从表BB中添加E,F,G。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

不确定你的想法是什么,但是如果你想在同一个表格中只显示来自AA和BB的普通数据,那么你可以使用这样的东西

 ( select A, B, C ,D, NULL as E, NULL as F, NULL as G from AA where some condition)

 UNION ALL

( select NULL as A , NULL as B, NULL as C, NULL as D, E , F , G  from BB where some condition) )

但不确定这是什么意思:|

如果你想要一些数据组合,那么必须加入。

答案 1 :(得分:0)

如果您正在寻找类似于此的结果:

A1  B1  C1  D1 
A2  B2  C2  D2 
A3  B3  C3  D3 
E1  F1  G1 
E2  F2  G2

然后尝试类似

的内容
(select A Fld1, B Fld2, C Fld3, D Fld4 from AA where some condition)
union
(select E Fld2, F Fld2, G Fld3, Null from BB where some condition)

换句话说,为两个选择之间相同的字段指定一个公共别名。当然,这些字段必须是相同的类型。