首页 > 解决方案 > 我可以使用 WITH clausule 创建表作为选择吗

问题描述

我想使用 WITH 子句创建表 - 例如这样做:

With t1 as ( select a, b, c from x1 )
, t2 as ( select p, q, r from x2 )

create table T as 
select a,b,c,q,r 
from t1 join t2 on t1.a = t2.p
;

但是当我执行这个时,我得到了ORA-00928

当然我的查询更复杂,但是当我在没有创建表的情况下执行它时,它可以工作...... ..问题出在哪里?

标签: sqloracleoracle11g

解决方案


当然,为什么不呢?您只需要遵循语法,即CREATE TABLE首先,WITH接下来的因式分解子句。

SQL> create table t as
  2    with test as (select empno, ename, job, sal from emp)
  3    select * from test;

Table created.

SQL> select * From t;

     EMPNO ENAME      JOB              SAL
---------- ---------- --------- ----------
      7369 SMITH      CLERK            920
      7499 ALLEN      SALESMAN        1600
      7521 WARD       SALESMAN        1250
      7566 JONES      MANAGER         2975
<snip>

推荐阅读