连接两个select语句的结果

时间:2012-12-20 08:35:00

标签: sql oracle

我的查询类似于:

concatenate( 
 (select col1 from table1) , ( select col1.substr(1,<tillENd>) ) 
)

如果两个子选择都返回一行和一列,则此方法正常。就我而言,两者都会给出多行而只有一列。

我想逐行连接它们。我怎么能这样做?


更新:完整查询如下所示。

查询1:

select col3 
from tabl2 
where col2 in (select substr(A,1,instr(A,'_',-1)-1) 
               from ( select substr(col1,1,instr(col1,'/')-1) as A 
                      from ( select col1 from tabl1 ) 

               ) 
           ) 

seond select query:

select substr(col1,instr(col1,'/')) as A1 
from ( select col1 
from tabl1 ) 

3 个答案:

答案 0 :(得分:7)

select ...
from   ...
union all
select ...
from   ...

或者,如果您使用UNION而不是UNION ALL,则完整的结果集将受DISTINCT操作的约束。

答案 1 :(得分:1)

现在您已经提供了一些示例查询,我们可以更轻松地提供解决方案。

关于您的附加要求,我假设您不希望匹配void字符串,因此最简单的方法是在子查询中过滤掉它们。

with data as ( select substr(col1,1,instr(col1,'/')-1) as A
               , substr(col1,instr(col1,'/')) as A1 
            from tabl1
           where instr(col1,'/') > 0 )
select tabl2.col3
       , data.A1
from data
      join tabl2
     on tabl2.col2 = substr(data.A,1,instr(data.A,'_',-1)-1);

答案 2 :(得分:0)

尝试LISTAGG功能。另请参阅COLLECT函数。

然后连接结果。