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

时间:2018-12-13 18:30:24

标签: sql teradata

我是Teradata SQL的新手。我正在尝试编写如下查询

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

我遇到错误:

  

3707

2 个答案:

答案 0 :(得分:1)

这是您想要的吗?

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

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

答案 1 :(得分:1)

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

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

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

也不要忘记定义主索引,因为CREATE TABLE AS SELECT将删除所有索引。另外,所有列都可以为NULLable。要解决此问题,最好使用

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

之后

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