Vertica - 解决将 WITH 与 INSERT 语句一起使用的问题

Vertica - Work around for using WITH with INSERT statement

我有一个 SQL 查询,例如

with subtable as (
................
)
select * 
from subtable

我想将 select 语句中的记录插入到 table 中。寻找类似的东西:

with subtable as (......)
insert into newtable 
select * 
from subtable

但是,在 Vertica 中,INSERT 不能与 WITH (CTE) 语句一起使用。

有什么解决办法吗?

感谢您的帮助

with 是 select 的一部分。

insert into newtable 
with subtable as (......) 
select * 
from subtable

我只能同意woot说的。 在 Vertica 中,常见的 table 表达式在 SELECT 语句中受支持 - 不在任何 DML 语句中。这也是 ANSI 标准的意图。 如果你的意思是让数据位在脚本的顶部而不是之前的 INSERT INTO foo 行的 "hidden" ,那么你可以(但仍然在 WITH 子句之前有一行):

CREATE LOCAL TEMPORARY TABLE foo(id,ts,name,exp) ON COMMIT PRESERVE ROWS AS 
          SELECT 1,'2016-12-13 10:11'::TIMESTAMP,'Moshe',1
UNION ALL SELECT 2,'2016-12-13 12:12'::TIMESTAMP,'Karl' ,2
UNION ALL SELECT 3,'2016-12-13 13:12'::TIMESTAMP,'Karl' ,2
UNION ALL SELECT 4,'2016-12-13 14:09'::TIMESTAMP,'Moshe',2
UNION ALL SELECT 5,'2016-12-13 18:07'::TIMESTAMP,'Karl' ,2
KSAFE 0;

理智的马可