同时创建和插入表的SQL查询错误

时间:2014-05-04 16:24:04

标签: sql database netezza

我有SQL查询需要通过子查询进行一些计算。

INSERT INTO db.my_new_table 
SELECT db.table1.id  ,  db.table1.value  *  db.table2.factor  AS myValue 
FROM
 (
      SELECT a.id, SUM(a.value) AS factor
      FROM  db.table0  a
      GROUP by a.id
 ) AS table1
 JOIN  db.table2   AS  b
 ON db.table1.id  =  b.id;

但是,我收到了错误:

  ERROR [HY000] ERROR:  Cross Database Access not supported for this type of command

在db上运行查询之前,我不想先创建新表。 我可以访问db。 我想同时创建和插入。

谢谢!

2 个答案:

答案 0 :(得分:1)

问题出在您的列引用中。您不需要使用模式为列添加前缀,只需使用别名。此外,您的子查询没有字段" value&#34 ;;我想你可能已经转换了字段。试试这个:

INSERT INTO db.my_new_table 
SELECT a.id, 
    a.factor * b.value AS myValue 
FROM (
        SELECT id, SUM(value) AS factor
        FROM  db.table0
        GROUP by id
     ) AS a
JOIN db.table2 AS b
     ON a.id = b.id;

答案 1 :(得分:0)

如果您的问题确实存在,并且您没有表格并想要将其作为插入语句的一部分创建,只需将插入更改为CREATE TABLE db.my_new_table AS SELECT ....

请参阅此处的文档: http://pic.dhe.ibm.com/infocenter/ntz/v7r0m3/index.jsp?topic=%2Fcom.ibm.nz.dbu.doc%2Fr_dbuser_create_table_as.html