Teradata从多表的UNION创建表错误:(3707)



我是Teradata SQL的新手。我正试图写一个查询如下

Create table abc as
(
with datasets as
(
select * from tableA
UNION
select * from tableB
)  );

我得到一个错误:

3707

这是你想要的吗?

Create table abc as
select * from tableA
UNION
select * from tableB;

当您使用CTE时,您应该在FROM子句中引用CTE。但是,不需要CTE。

您应该始终显示准确的错误消息,Create Table As的语法有一个必需的参数:

Create table abc as
(
select * from tableA
UNION
select * from tableB
) WITH DATA;

你真的需要UNION吗?UNION ALL将提高性能,因为它避免了DISTINCT处理。

不要忘记定义主索引,因为CREATE TABLE as SELECT将删除所有索引。此外,所有列都将是NULL。要解决此问题,最好使用创建表

Create table abc as tableA WITH NO DATA; -- exact copy

然后是

insert into abc
select * from tableA
UNION
select * from tableB

最新更新