2012-12-20 3 views
1

내 쿼리는 같은 것입니다 :연결할 결과는

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) 

       ) 
      ) 

번째 차이점 선택 쿼리 : 대신 UNION의 UNION을 사용하는 경우

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

테이블 당 몇 개의 행과 원하는 결과가있는 예제를 넣을 수 있습니까? –

+0

table1과 table2 사이에 관계가 있습니까? – Ben

+0

이 질문은 불완전한 것 같습니다 –

답변

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

또는 ALL 전체 결과 세트가 DISTINCT 작동 될 수 있습니다.

+0

내가 이것을 시험해 보도록하겠습니다. –

+0

두 쿼리의 출력을 2 행으로 표시합니다. 두 행렬의 결과를 단일 행에 연결하려고합니다. 많은 시련이 .. 난 내 쿼리를 얻었다 후 –

0

시도해보십시오. LISTAGG 기능. 또한 COLLECT 기능을 참조하십시오.

그런 다음 결과를 연결하십시오.

1

몇 가지 샘플 쿼리를 제공 했으므로 이제 솔루션을 더 쉽게 제공 할 수 있습니다.

추가 요구 사항에 대해서는 공백 문자열을 일치시키지 않으려면 가장 쉬운 방법은 하위 쿼리에서 필터링하는 것이 가장 쉬운 방법이라고 생각합니다.

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); 
+0

안녕하세요 .. .. 일부는 것 같은 : || (SUBSTR (COL1, INSTR (COL1, '/'))) 표 FROM PATH , 표 2 COL2를 COL3 선택 || '_'|| col4 = SUBSTR (col1, 1, INSTR (col1, '/') - 1); 문제점 : col1에서 '/'을 찾지 못하면 0을 반환하고이 0 substr 때문에 문자열이 시작에서 나에게 제공되기 때문에 원하는 것이 없습니다. '/'가 없으면 무효 문자열이 필요합니다. 제안 사항이있을 수 있습니다. –

+0

리비전과 일치하는 쿼리를 편집하지 않아도됩니다. 여기에서 중요한 것은 원리입니다.그러나 내 의견을 실제 상황에 적용 할 수없는 경우 테이블 구조, 샘플 데이터 및 원하는 결과를 더 자세하게 게시해야합니다. 전체 그림을 제공하지 않을 때 우리가 완전한 해결책을 제시하는 것은 어렵습니다. – APC

+0

귀하의 목소리에 감사드립니다. @APC. 제 질문을 바르게하지 않았을 수도 있습니다. 미안 해요 .. 지금이나 후에 나는 이것을 배울 것입니다. 나는 나의 문제를 해결 한 이것에 관한 하나의 하위 질의를했다. 정말 고마워요. –