Connect By分层查询oracle
Connect By hierarchical query oracle
我有以下查询输出。我想获得一列,其中包含 3 列中的所有不同值 query.I 我无法决定是否可以通过 connect by 或其他函数来实现。
Dad Mom Child
------ ---- -----
D006 M026 LA019
D006 M026 NP082
D005 M048 NG073
预期输出:
D006
D005
M026
M048
LA019
NP082
NG073
使用Union
将不同的列组合成单个列,这也将避免duplicates
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 的联合更简单,但如果您使用的是 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
逆透视操作添加了一个新列,指示值来自哪个原始列;因为您显然对它可以被丢弃不感兴趣,但这必须在外部查询中完成。
SQL Fiddle demo 显示内部查询,其中包含反透视表添加的额外列,以及包含在外部查询中以摆脱它并删除重复项的相同内容。
我有以下查询输出。我想获得一列,其中包含 3 列中的所有不同值 query.I 我无法决定是否可以通过 connect by 或其他函数来实现。
Dad Mom Child
------ ---- -----
D006 M026 LA019
D006 M026 NP082
D005 M048 NG073
预期输出:
D006
D005
M026
M048
LA019
NP082
NG073
使用Union
将不同的列组合成单个列,这也将避免duplicates
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 的联合更简单,但如果您使用的是 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
逆透视操作添加了一个新列,指示值来自哪个原始列;因为您显然对它可以被丢弃不感兴趣,但这必须在外部查询中完成。
SQL Fiddle demo 显示内部查询,其中包含反透视表添加的额外列,以及包含在外部查询中以摆脱它并删除重复项的相同内容。