SQL - 从Select +用户定义的列和值创建表

时间:2014-12-09 13:46:23

标签: sql oracle create-table

目前我有以下SELECT语句:

CREATE TABLE  TEST AS
SELECT ROW_ID,
            PROM_INTEG_ID,
            INTEGRATION_ID,
            BILL_ACCNT_ID,
            SERV_ACCT_ID,
            CFG_STATE_CD   
FROM PRODUCTS
WHERE PROD_ID = 'TestProduct'
AND STATUS_CD = 'Active';

但是我必须添加一些在PRODUCTS表中不存在的其他列,并使用我自己的名称定义它们.e.g HIERARCHY

我尝试在我的SQL查询中使用WITH操作数,但由于语法错误而一直失败。

    CREATE TABLE  TEST AS
SELECT ROW_ID,
            PROM_INTEG_ID,
            INTEGRATION_ID,
            BILL_ACCNT_ID,
            SERV_ACCT_ID,
            CFG_STATE_CD   
            WITH
                  PRODUCT_HEIRARCHY varchar2(30)  'Test123Value'
FROM PRODUCT
WHERE PROD_ID = 'TestProduct'
AND STATUS_CD = 'Active';

总而言之,我想从现有表中提取列并定义我自己的列。

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:6)

只需将列添加到选择:

CREATE TABLE TEST AS 
    SELECT ROW_ID, PROM_INTEG_ID, INTEGRATION_ID, BILL_ACCNT_ID, SERV_ACCT_ID, CFG_STATE_CD,
           CAST('Test123Value' AS VARCHAR2(30)) as PRODUCT_HIERARCHY
    FROM PRODUCTS
    WHERE PROD_ID = 'TestProduct' AND STATUS_CD = 'Active';

请注意,cast()不是必需的。但如果您希望列具有特定类型,那么这是一个好主意。

答案 1 :(得分:1)

同样使用CTE,即WITH clause通常知道,您可以create table

CREATE TABLE t
AS 
WITH data AS ( 
   SELECT...
) 
SELECT * 
FROM data