2012-12-20 74 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) 

       ) 
      ) 

seond選擇查詢:

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 ... 

或者,如果你使用的不是UNION UNION ALL整個結果集是受不同的操作。

+0

讓我試試這個。 –

+0

它在兩行中顯示兩個查詢的輸出。我想在單行中連接兩個查詢的結果。 –

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

您好..經過多次試驗..我得到了我的詢問。有些事情,如: 選擇COL3 ||(SUBSTR(COL1,INSTR(COL1, '/'))) PATH FROM表1,表2 其中COL2 ||'_'|| col4 = SUBSTR(col1,1,INSTR(col1,'/') - 1); 但我在這裏面臨一個問題.. 問題:如果我不在col1中找到'/',那麼它返回0 ..並且因爲這個零substr給我從開始的字符串,我不想要。 我想如果'/'不存在給無效字符串。 任何建議將是可觀的。 –

+0

我不打算編輯我​​的查詢來匹配您的修訂 - 這是重要的原則。但是,如果您無法根據實際情況調整我的建議,則必須發佈更多詳細信息:表結構,示例數據和所需輸出。當你不提供全貌時,我們很難提供完整的解決方案。 – APC

+0

我非常感謝您關注@APC的聲音。可能是我沒有用正確的方式提出我的問題。對不起,現在或之後,我也會學到這一點。我已經問過一個關於這個問題的子問題,它解決了我的問題。所以,非常感謝您的時間。 –