SQL 编译错误:无法在 Snowflake 中评估不受支持的子查询类型

Posted

技术标签:

【中文标题】SQL 编译错误:无法在 Snowflake 中评估不受支持的子查询类型【英文标题】:SQL compilation error: Unsupported subquery type cannot be evaluated in Snowflake 【发布时间】:2020-02-24 12:24:03 【问题描述】:

我面临 SQL 编译错误:无法在用于 QA 的 Snowflake 实例之一中评估不支持的子查询类型以进行以下查询:

Select 
 CASE WHEN (Select count(USERSOURCE) From QA_DW.PRDODB.User Where 
 USERSOURCE=3) = 0  OR RECID not in (Select UD_SRC_KEY From QA_DW.PRDODB.User 
 Where 
 USERSOURCE=3)  
      THEN CreatedDateTime 
 ELSE CONVERT_TIMEZONE('US/Pacific','UTC',cast(CURRENT_TIMESTAMP() as 
      TIMESTAMP_NTZ)) 
 END  as FROM_DTIMEUTC
 FROm QA_STAGING.HISTODB.STG_User_TBL 

相同的查询在 DEV 实例中运行。

【问题讨论】:

【参考方案1】:

使用这个查询代替上面的查询:

SELECT 
CASE WHEN c.COUNT_USERSOURCE = 0 OR RECID NOT IN (SELECT UD_SRC_KEY FROM 
QA_DW.PRDODB.USER WHERE USERSOURCE=3)
THEN CreatedDateTime 
ELSE CONVERT_TIMEZONE('US/Pacific','UTC',CAST(CURRENT_TIMESTAMP() AS TIMESTAMP_NTZ)) 
END AS FROM_DTIMEUTC 
FROM QA_STAGING.HISTODB.STG_User_TBL
OUTER APPLY (
 SELECT 
 COUNT(USERSOURCE)  AS COUNT_USERSOURCE
 FROM QA_DW.PRDODB.USER WHERE USERSOURCE=3
 ) AS C

【讨论】:

以上是关于SQL 编译错误:无法在 Snowflake 中评估不受支持的子查询类型的主要内容,如果未能解决你的问题,请参考以下文章

Snowflake:SQL 编译错误:不是有效的 group by 表达式

将 CSV 文件从 S3 加载到 Snowflake 时出现 SQL 编译错误

SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组

Snowflake 中的返回类型“Table”问题

无法选择作为 SQL 关键字的列名

雪花; SQL 编译错误:无效的对象类型:GET_DDL 上的“EXTERNAL_TABLE”(“DATABASE”,“MyDb”)