1

我的查询类似于:

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

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

我想逐行连接它们。我怎样才能做到这一点?


更新:完整的查询类似于以下内容。

查询一:

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 ) 

               ) 
           ) 

第二次选择查询:

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

3 回答 3

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

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

于 2012-12-20T08:39:05.673 回答
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);
于 2012-12-20T09:18:05.063 回答
0

试试LISTAGG功能。另请参阅收集功能。

然后连接结果。

于 2012-12-20T08:44:25.653 回答