【问题标题】:(Oracle)Using WITH clause in subquery(Oracle)在子查询中使用 WITH 子句
【发布时间】:2021-03-06 11:40:59
【问题描述】:

我的目标是合并两个 WITH 子句的结果。 下面使用 UNION 的 Code1 按预期工作。但是如果将 WITH 子句用作 code2,则会显示 ORA-32034:不支持使用 WITH 子句。 如何修改code2,合并WITH子句的两个结果?

代码1

select * from 
( (select 1 from dual)
  union all
  (select 2 from dual)
);

代码2

select * from 
( 
 (WITH TEMP AS ( select 1 from dual )  select * from TEMP)
  union all
  (WITH TEMP AS ( select 2 from dual )  select * from TEMP)
);

【问题讨论】:

  • 在 SELECT 语句之前定义 CTE。

标签: oracle subquery


【解决方案1】:

在这里

WITH temp1 AS (SELECT 1 FROM dual),
     temp2 AS (SELECT 2 FROM dual)
SELECT * FROM
(
    (SELECT * FROM temp1) 
    UNION ALL 
    (SELECT * FROM temp2)
)

【讨论】:

    【解决方案2】:

    如何修改code2,将WITH子句的两个结果合并?

    如果你真的需要使用WITH两次分隔那么:

    select * from ((WITH TEMP AS ( select 1 from dual )  select * from TEMP))
    union all
    SELECT * FROM ((WITH TEMP AS ( select 2 from dual )  select * from TEMP));
    

    db<>fiddle demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多