将 CTE table 值插入物理 table 时出错
Error when inserting CTE table values into physical table
我有一个复杂的查询,它从其他 CTE_Table 中创建一个主 CTE_Table。我想把masterCTE_Table的结果插入到物理table中。我使用的是 Teradata 版本 15.10.04.03
SELECT失败。 [3707] 语法错误,需要类似 'SELECT' 关键字或“(”或 'TRANSACTIONTIME' 关键字或“)”和 'INSERT' 关键字之间的 'VALIDTIME' 关键字。
丢弃 TABLE dbname.physicalTablename ;
创建多集 TABLE dbname.physicalTablename ,
没有回退,
没有在期刊之前,
没有日记后,
校验和 = 默认值,
默认 MERGEBLOCKRATIO
(
col1 整数,
col2 整数,
col3 整数
)
没有主要索引;
与
cteTable3 AS
( SELECT A.colA, A.colB, A.colC, B.col1, B.col2, B.col3
FROM cteTable1 A INNER JOIN cteTable2 ON (blah blah blah) ),
cteTable2 AS
(SELECT 来自 SourceTableB 的 col1、col2、col3),
cteTable1 AS
(SELECT 来自 SourceTableA 的 colA、colB、colC)
插入 dbname.physicalTablename
( col1, col2, col3, col4, col5, col6 )
SELECT
(C3.colA, C3.colB, C3.colC, C3.col1, C3.col2, C3.col3)
从 cteTable3 C3 ;
虽然您遗漏了问题的插入部分,但我认为以下内容可能会解决问题。在 INSERT 中使用 CTE 的正确格式是:
INSERT INTO <tablename>
WITH <cte> AS (SELECT...)
SELECT <fields> FROM <cte>
考虑以下几点:
CREATE MULTISET VOLATILE TABLE tmp AS (SELECT 'bobby' as firstname) WITH DATA ON COMMIT PRESERVE ROWS;
INSERT INTO tmp
WITH cte AS (select 'carol' as firstname)
SELECT * FROM cte;
SELECT * FROM tmp;
DROP TABLE tmp;
我有一个复杂的查询,它从其他 CTE_Table 中创建一个主 CTE_Table。我想把masterCTE_Table的结果插入到物理table中。我使用的是 Teradata 版本 15.10.04.03
SELECT失败。 [3707] 语法错误,需要类似 'SELECT' 关键字或“(”或 'TRANSACTIONTIME' 关键字或“)”和 'INSERT' 关键字之间的 'VALIDTIME' 关键字。
丢弃 TABLE dbname.physicalTablename ;
创建多集 TABLE dbname.physicalTablename , 没有回退, 没有在期刊之前, 没有日记后, 校验和 = 默认值, 默认 MERGEBLOCKRATIO ( col1 整数, col2 整数, col3 整数 ) 没有主要索引;
与
cteTable3 AS ( SELECT A.colA, A.colB, A.colC, B.col1, B.col2, B.col3 FROM cteTable1 A INNER JOIN cteTable2 ON (blah blah blah) ),
cteTable2 AS (SELECT 来自 SourceTableB 的 col1、col2、col3),
cteTable1 AS (SELECT 来自 SourceTableA 的 colA、colB、colC)
插入 dbname.physicalTablename
( col1, col2, col3, col4, col5, col6 )
SELECT
(C3.colA, C3.colB, C3.colC, C3.col1, C3.col2, C3.col3)
从 cteTable3 C3 ;
虽然您遗漏了问题的插入部分,但我认为以下内容可能会解决问题。在 INSERT 中使用 CTE 的正确格式是:
INSERT INTO <tablename>
WITH <cte> AS (SELECT...)
SELECT <fields> FROM <cte>
考虑以下几点:
CREATE MULTISET VOLATILE TABLE tmp AS (SELECT 'bobby' as firstname) WITH DATA ON COMMIT PRESERVE ROWS;
INSERT INTO tmp
WITH cte AS (select 'carol' as firstname)
SELECT * FROM cte;
SELECT * FROM tmp;
DROP TABLE tmp;