条款不与工会合作

时间:2017-04-07 06:21:28

标签: oracle

我的查询结果是多个查询的并集。当我在联合中使用WITH子句时,我面临以下错误。有什么想法吗?

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子句"
  *原因:由于以下两个原因之一而无法使用WITH子句              1.尚未支持在WITH子句中嵌套WITH子句
             2.对于集合查询,不能为分支指定WITH子句              3. WITH子句不能在括号内指定   *操作:正确查询并重试

2 个答案:

答案 0 :(得分:7)

将您的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
)

答案 1 :(得分:6)

在实际的UNION查询之前,首先定义CTE。然后像使用普通表一样使用它:

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