Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 需要来自_表的外部联接查询标志_Oracle - Fatal编程技术网

Oracle 需要来自_表的外部联接查询标志

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

我希望在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
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小时前)发表了评论,但现在是真的。