在Teradata SQL中运行SQL查询时出现错误3802

时间:2020-01-23 02:00:54

标签: sql teradata

我正在运行以下查询。

create multiset volatile table table1 as (
select
a.variable1,
a.variable2, 
b.variable3, 
b.variable4, 
c.variable5, 
c.variable6, 
d.variable7,
d.variable8

from data1 as a
left join data2 as b
on a.ID1=b.ID1 and a.date1=b.date1
left join data3 as c
on a.ID1=c.ID1 and a.date1=c.date1
left join data4 as d
on a.ID1=d.ID1 and a.date1=d.date1
where a.variable1>100 and a.varaiable2 in ('A','B'))
with data primary index (id1,id2,id3,date1) on commit preserve rows ;

我遇到了错误- PreparedStatementCallback;错误的SQL语法[];嵌套的异常是java.sql.SQLException:[Teradata数据库] [TeraJDBC 16.20.00.08] [错误3802] [SQLState 42S02]数据库'd'不存在。” ]

但是,我能够运行查询select * from data4,这意味着data4确实存在。

如果你们能帮助我找出导致此错误的原因,那将是很好的。

非常感谢。

1 个答案:

答案 0 :(得分:0)

在创建带有子选择的表时,无论表的类型如何,为了将列作为PI放置在括号之外,必须在内部选择它们,否则解析引擎将不知道这些列是什么以及从何处得到他们。

在这种情况下,您需要:

A.ID1 AS ID1,
B.ID1 AS ID2,
C.ID1 AS ID3,
A.DATE1 AS DATE1,

尝试一下:

CREATE MULTISET VOLATILE TABLE TABLE1 AS (
SELECT
A.ID1 AS ID1,
B.ID1 AS ID2,
C.ID1 AS ID3,
A.DATE1 AS DATE1,
A.VARIABLE1,
A.VARIABLE2, 
B.VARIABLE3, 
B.VARIABLE4, 
C.VARIABLE5, 
C.VARIABLE6, 
D.VARIABLE7,
D.VARIABLE8
FROM DATA1 AS A
LEFT JOIN DATA2 AS B
ON A.ID1=B.ID1 AND A.DATE1=B.DATE1
LEFT JOIN DATA3 AS C
ON A.ID1=C.ID1 AND A.DATE1=C.DATE1
LEFT JOIN DATA4 AS D
ON A.ID1=D.ID1 AND A.DATE1=D.DATE1
WHERE A.VARIABLE1>100 AND A.VARIABLE2 IN ('A','B')
)
WITH DATA
PRIMARY INDEX (ID1,ID2,ID3,DATE1)
ON COMMIT PRESERVE ROWS;
相关问题