我有两张桌子,
表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中的单个行。
答案 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;
至少这适用于你问题中的数据。