Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle 11g R2中从SELECT AS创建表并按范围列表对表进行分区?_Sql_Oracle_Oracle11gr2 - Fatal编程技术网

Sql 如何在Oracle 11g R2中从SELECT AS创建表并按范围列表对表进行分区?

Sql 如何在Oracle 11g R2中从SELECT AS创建表并按范围列表对表进行分区?,sql,oracle,oracle11gr2,Sql,Oracle,Oracle11gr2,我试图从一个名为Titles的现有表中创建一个名为Titles2的新表。我必须使用SELECT AS语句从标题创建标题2中的列。我还必须按范围和列表对标题2进行划分 用于创建标题的代码: SQL> CREATE TABLE Titles 2 ( 3 Title_id char(3) , 4 Title varchar2(40), 5 Genre varchar2(10), 6

我试图从一个名为Titles的现有表中创建一个名为Titles2的新表。我必须使用SELECT AS语句从标题创建标题2中的列。我还必须按范围和列表对标题2进行划分

用于创建标题的代码:

SQL> CREATE TABLE Titles
  2    (
  3    Title_id         char(3)     ,
  4    Title            varchar2(40),
  5    Genre            varchar2(10),
  6    Pages            number      ,
  7    Price            number(5,2) ,
  8    Sales            number      ,
  9    Pub_id           char(3)     ,
 10    Pubdate          date        ,
 11    Advance          number(9,2) ,
 12    Royalty_rate     number(5,2) ,
 13    CONSTRAINT Titles_pk PRIMARY KEY (title_id),
 14    CONSTRAINT Titles_Publishers_fk FOREIGN KEY (Pub_id)
 15                             REFERENCES Publishers (pub_id)
 16    )
 17    PARTITION BY RANGE (Pubdate) (
 18    PARTITION P1 VALUES LESS THAN (TO_DATE('01-JAN-1995', 'DD-MON-YYYY')) TABLESPACE TSLab8ben1,
 19    PARTITION P2 VALUES LESS THAN (TO_DATE('01-JAN-2000', 'DD-MON-YYYY')) TABLESPACE TSLab8ben2,
 20    PARTITION P3 VALUES LESS THAN (MAXVALUE) TABLESPACE TSLab8ben3
 21    );

Table created.
以下代码是我迄今为止从标题创建Titles2表的代码:

CREATE TABLE Titles2 AS
SELECT Title_id AS TID, Title, Genre, Sales, (Sales * Price) AS Revenue, Pub_id AS P#
FROM Titles
PARTITION BY RANGE (Revenue)
SUBPARTITION BY LIST (Genre)
SUBPARTITION TEMPLATE (
SUBPARTITION G1 VALUES ('history', 'biography'),
SUBPARTITION G2 VALUES ('computer','children'),
SUBPARTITION G3 VALUES (DEFAULT)) (
PARTITION P1 VALUES LESS THAN (100000),
PARTITION P2 VALUES LESS THAN (500000),
PARTITION P3 VALUES LESS THAN (1000000),
PARTITION P4 VALUES LESS THAN (MAXVALUE));

但是,创建Titles2的代码不会执行。有人能帮我执行标题2的代码吗?谢谢

创建表
Titles2
只需使用
Create table
语句(不是cta)和适当的分区,就像您使用
标题所做的那样。然后使用
insert
语句用
标题中的数据填充
标题2

insert into Titles2 
  select <<columns>>
    from Titles  

为什么需要将
CREATE TABLE作为SELECT创建
标题2
?为什么不能使用
CREATE TABLE
命令创建
Titles2
,然后在Titles2中插入
从标题中选择来填充数据?
CREATE TABLE Titles2
  PARTITION BY RANGE (Revenue)(
    SUBPARTITION BY LIST (Genre)
    SUBPARTITION TEMPLATE (
    SUBPARTITION G1 VALUES ('history', 'biography'),
    SUBPARTITION G2 VALUES ('computer','children'),
    SUBPARTITION G3 VALUES (DEFAULT)) (
    PARTITION P1 VALUES LESS THAN (100000),
    PARTITION P2 VALUES LESS THAN (500000),
    PARTITION P3 VALUES LESS THAN (1000000),
    PARTITION P4 VALUES LESS THAN (MAXVALUE))
   ) AS
SELECT Title_id AS TID
     , Title
     , Genre
     , Sales
     , (Sales * Price) AS Revenue
     , Pub_id AS P#
FROM Titles