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

SQL-从Select+用户定义的列和值创建表,sql,oracle,create-table,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 = '

目前我有以下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表中不存在的附加列,并用我自己的名称定义它们。例如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';
总之,我想从现有表中引入列,并定义一些我自己的列


任何需要的帮助

只需将列添加到选择:

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';
请注意,不需要强制转换。但是,如果您希望列具有特定类型,这是一个好主意。

还可以使用CTE,即众所周知的WITH子句,创建表


谢谢,出于好奇,多表选择的WITH运算符是吗?如果我们想要原始表中的所有列呢?选择*,将“Test123Value”强制转换为VARCHAR230,因为PRODUCT_层次结构似乎不起作用ORA-00923:FROM关键字未找到expectedAnswer我是oracle数据库的新手-我们不能单独使用*,我们需要表名:@Mr_and_Mrs_D。您将限定*:products.*。错误是正确的,存在语法错误。看到我的答案了。你能拼一下这个查询吗?Mr_和Mrs_D OP没有公布他想添加到select中的其他列和表的详细信息。因此,我假设他必须连接其他表,并使用表别名在列列表中引用它们。所有这些都将包含在WITH子句中。Cf。答案是@Gordon
CREATE TABLE t
AS 
WITH data AS ( 
   SELECT...
) 
SELECT * 
FROM data