Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
Sql 通过分层查询oracle连接_Sql_Database_Oracle - Fatal编程技术网

Sql 通过分层查询oracle连接

Sql 通过分层查询oracle连接,sql,database,oracle,Sql,Database,Oracle,我有一个查询的以下输出。我想在一个查询中获得一列,其中包含3列中所有不同的值。我无法决定是否可以通过connect by或其他函数实现 Dad Mom Child ------ ---- ----- D006 M026 LA019 D006 M026 NP082 D005 M048 NG073 预期产出: D006 D005 M026 M048 LA019 NP082 NG073 使用Union将不同的列组合成单个列,这也将避免重复 S

我有一个查询的以下输出。我想在一个查询中获得一列,其中包含3列中所有不同的值。我无法决定是否可以通过connect by或其他函数实现

Dad     Mom    Child
------  ----   -----
D006    M026    LA019
D006    M026    NP082
D005    M048    NG073
预期产出:

D006
D005
M026
M048
LA019
NP082
NG073

使用
Union
将不同的列组合成单个列,这也将避免重复

SELECT Dad FROM yourtable
UNION
SELECT Mom FROM yourtable
UNION
SELECT Child FROM yourtable 
更新:

WITH cte
     AS (SELECT Dad,Mom,Child
         FROM   bigquery) 
SELECT Dad FROM cte
UNION
SELECT Mom FROM cte
UNION
SELECT Child FROM cte; 

带有CTE的union更简单,但如果您使用的是11g,则可以取消打印列:

select distinct person
from (
  select *
  from (
    -- this is your real big query
    select 'D006' as dad, 'M026' as mom, 'LA019' as child from dual
    union all select 'D006', 'M026', 'NP082' from dual
    union all select 'D005', 'M048', 'NG073' from dual
  )
  unpivot (person for anyone IN (dad AS 'DAD', mom AS 'MOM', child AS 'CHILD'))
);

PERSON
------
D006   
NP082  
M026   
LA019  
M048   
D005   
NG073  

 7 rows selected 
unpivot操作添加一个新列,指示值来自哪个原始列;因为您显然对它不感兴趣,所以可以丢弃它,但这必须在外部查询中完成


用unpivot添加的额外列显示内部查询,并将相同的内容包装在外部查询中以除去它并删除重复项。

感谢您的回复,除了UNION之外还有其他选项吗?我们可以使用表函数sys.odcivarchar2list()并在其中传递列吗。我试过了,但它不接受列,也许我做得不对,表又是一个大查询,所以想调用它once@RajA-如果是大查询的结果,请使用
CTE
。非常感谢您的帮助,我的ADF程序员不想使用:-)@RajA-您的ADF程序员是否任意不喜欢CTE,或者,是否有实际理由不针对需求使用适当的工具?