寻找使用SQL OR PL SQL获得所需输出的解决方案

时间:2017-03-26 14:23:26

标签: sql plsql oracle11g

我有两张桌子,

表E

e.part  e.source  e.col1  e.col2  e.col3  e.event  ecol4  ecol5    
AAA     XXXXX      a      b       c       e.e1     d      f

表F

f.part  f.source  f.col1  f.col2  f.col3  f.event  f.col4  f.col5    
AAA     XXXXX      a       b       c       f        null   null

我使用UNION创建最终表EF,其中包含EF.type列和使用CASE语句创建的其他列。如果事件来自表F且f.event值为f,则EF.type值应填充为“ftype”。

表E和表F具有相同的部分,来源,col1,col2和col3值,

表格EF

ef.part ef.source ef.col1 ef.col2 ef.col3 ef.event ef.c4   ef.c5 ef.c6   EF.type    
AAA     XXXXX     a       b       c       e.e1     d       e     f       null
AAA     XXXXX     a       b       c       f        null    null  null    ftype

但我希望最终输出如下:

ef.part ef.source ef.col1 ef.col2 ef.col3  ef.event ef.col4case ef.c5case   ef.c6case   EF.type    
AAA     XXXXX     a       b       c        e.e1     d           e           f           ftype 

将表F和表E中的列值合并到最终表EF中的单个行。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以使用join

select e.part, e.source, e.col1, e.col2, e.col3,
       e.event, e.col4, e.c5, f.c6case, F.type
from e join
     f
     on e.part = f.part and e.source = f.source and e.col1 = f.col1 and
        e.col2 = f.col2 and e.col3 = f.col3;

至少这适用于你问题中的数据。