Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 SQL-将两列合并为一列_Sql_Oracle_Select_Unpivot - Fatal编程技术网

Oracle SQL-将两列合并为一列

Oracle SQL-将两列合并为一列,sql,oracle,select,unpivot,Sql,Oracle,Select,Unpivot,我有一张桌子 Column 1 Column 2 A B B C C D C E 现在我想要下面的输出,从A到端点的所有可能路径,比如A-B-C-D,A-B-C-E Column 1 A B C D A B C E 您需要记录通过节点的路径,并且只返回完整的路径,因此以下内容应该可以帮助您实现: with

我有一张桌子

Column 1       Column 2
   A              B
   B              C
   C              D
   C              E
现在我想要下面的输出,从A到端点的所有可能路径,比如A-B-C-D,A-B-C-E

Column 1 
   A
   B
   C
   D
   A
   B
   C
   E

您需要记录通过节点的路径,并且只返回完整的路径,因此以下内容应该可以帮助您实现:

with dat as (
select 'A' col1, 'B' col2 from dual union all
select 'B' col1, 'C' col2 from dual union all
select 'C' col1, 'D' col2 from dual union all
select 'C' col1, 'E' col2 from dual )
select ltrim(the_path,'-')||'-'||col2
from (
    select SYS_CONNECT_BY_PATH(col1, '-') the_path
          ,CONNECT_BY_ISLEAF is_leaf
          ,col2
    from dat
    start with col1 = 'A'
    connect by prior col2 = col1
    ) where is_leaf = 1;

你想要的是这样的东西吗

with sample_data as (select 'A' col1, 'B' col2 from dual union all
                     select 'B' col1, 'C' col2 from dual union all
                     select 'C' col1, 'D' col2 from dual union all
                     select 'C' col1, 'E' col2 from dual union all
                     select 'A' col1, 'F' col2 from dual)
select connect_by_root(col1)||sys_connect_by_path(col2, '-') route
from   sample_data
where  connect_by_isleaf = 1
connect by prior col2 = col1
start with col1 = 'A';

ROUTE
---------
A-B-C-D
A-B-C-E
A-F

那么你想要一个?你怎么知道从A开始?还有一个查询告诉我开始点。是的,我想要一个分层查询。就像火车从A站出发,有很多站。所以火车可以到达终点的所有路线。你的例子不清楚。请阅读这里是一个伟大的地方,为什么你需要在不同的路线分裂行?您计划如何使用这些数据?