2017-04-07 91 views
0

我的查詢結果是幾個查詢的聯合。當我在union中使用WITH子句時,我遇到了下面的錯誤。任何想法爲什麼?使用子句與union不起作用

select column1 from TABLE_A 
union 
with abcd as (select * from TABLE_B) 
    select column2 from TABLE_A A, abcd 
    where abcd.m_reference = A.m_reference 

ORA-32034:不支持使用WITH子句
32034. 00000 - 「WITH子句中使用不支持的」
*原因:Inproper使用WITH子句,因爲以下兩個原因之一
1.不支持在WITH子句中嵌套WITH子句
2.對於設置的查詢,不能爲分支指定WITH子句。
3. WITH子句不能在括號內指定。
*行動:正確的查詢,然後重試

回答

2

就先定義CTE,實際UNION查詢之前。然後使用它,你會經常表:

with abcd as (select * from TABLE_B) 
select column1 from TABLE_A 
union 
select column2 
from TABLE_A A 
inner join abcd 
    on abcd.m_reference = A.m_reference 

您可以使用多個CTE如下:

with cte1 AS (...), 
    cte2 AS (...) 
select * from ... 
+0

工作情況下,只有一個查詢我想與「與」聯合。如果有多個呢? – asb

3

封裝你WITH語句的僞選擇。

select column1 from TABLE_A 
union 
select * from (
    with abcd as (select * from TABLE_B) 
    select column2 from TABLE_A A, abcd 
    where abcd.m_reference = A.m_reference 
)