Oracle 需要来自_表的外部联接查询标志
我希望在oracle中完整外部联接的输出中有一个标志,表示from_table,它表明此tows来自外部联接中的哪个表 前 一个完整的外部联接将提供A和B的并集,即A中的所有行和B中的所有行。如果A中的某些内容在B中没有相应的基准,则B部分为空,反之亦然Oracle 需要来自_表的外部联接查询标志,oracle,Oracle,我希望在oracle中完整外部联接的输出中有一个标志,表示from_table,它表明此tows来自外部联接中的哪个表 前 一个完整的外部联接将提供A和B的并集,即A中的所有行和B中的所有行。如果A中的某些内容在B中没有相应的基准,则B部分为空,反之亦然 select * from a FULL OUTER JOIN b on a.a = b.b; a | b -----+----- 1 | null 2 | null 3 | 3 4 | 4 nul
select * from a FULL OUTER JOIN b on a.a = b.b;
a | b
-----+-----
1 | null
2 | null
3 | 3
4 | 4
null | 6
null | 5
我需要以下输出:
a | b | from_table
-----+-----
1 | null | A
2 | null | A
3 | 3 | both
4 | 4 | both
null | 6 | B
null | 5 | B
请提出问题
select a.*, b.*,
case when a.a is not null and b.b is not null then 'both'
when a.a is not null then 'a'
else 'b'
end as from_table
from a
FULL OUTER JOIN b on a.a = b.b;
可以连续使用
nvl
和nvl2
功能:
select a, b, decode(sign(nvl2(x,1,0)*nvl2(y,1,0)),1,'both',nvl(x,y)) "from_table"
from
(
select a.*, b.*, nvl2(a,'A',null) x, nvl2(b,'B',null) y
from a FULL OUTER JOIN b on a.a = b.b order by a,b
);
非常感谢@juergen da需要进行少量更正(给出ORA-00923:FROM关键字未在预期位置找到)。@BarbarosÖzhan:你确定你正确应用了它吗?是的,我对你之前的编辑(大约8小时前)发表了评论,但现在是真的。