Snowflake中创建临时表并与另一表同查询关联的语法问题
Snowflake临时表创建与关联查询的正确写法
你遇到的错误是因为Snowflake不支持在SELECT语句的FROM子句中嵌套CREATE TABLE操作,这种语法不符合Snowflake的SQL规范。
下面是两种正确的实现方式:
方式一:分步骤创建临时表并关联查询
这是最直接符合你需求的方法——先独立创建临时表,再执行关联查询:
-- 创建临时表TMP_TBL1 CREATE OR REPLACE TEMPORARY TABLE TMP_TBL1 AS SELECT * FROM A; -- 关联临时表与表B查询数据 SELECT TMP_TBL1.*, B.* FROM TMP_TBL1 JOIN B ON TMP_TBL1.ADDRESS = B.ADDRESS;
方式二:用CTE替代临时表(无需实际创建表)
如果不需要保留临时表,只是临时用表A的结果关联表B,可以用公共表表达式(CTE),这样不需要创建物理临时表:
WITH TMP_TBL1 AS ( SELECT * FROM A ) SELECT TMP_TBL1.*, B.* FROM TMP_TBL1 JOIN B ON TMP_TBL1.ADDRESS = B.ADDRESS;
内容的提问来源于stack exchange,提问作者Shanoo
相关产品推荐
相关产品推荐

