小编Nic*_* L.的帖子

这是一个错误,还是 Snowflake 不完全支持 WHERE EXISTS 子句中的相关子查询?

如果过滤条件依赖于外部表和子查询表中的合并列,则 Snowflake 会针对 EXISTS 子句引发错误。如果我从 COALESCE 中删除外部表列或将 COALESCE 替换为长格式等效逻辑,则查询将运行。

我看到这个错误,特别是SQL 编译错误: Unsupported subquery type cannot bevaluated,我认为这是一个相当简单的 WHERE EXISTS 子句。这适用于我使用过的每个(最近的)SQL 变体(例如 SQL Server、Postgres),所以我有点担心 Snowflake 不支持它。我错过了什么吗?

我在 2019 年的Snowflake 社区中发现了一个类似的问题,当 EXISTS 子句包含一个 WHERE 过滤条件,该条件引用外部查询中的列以进行连接表以外的操作时,Snowflake 会失败。那里没有明确的解决方案。

Snowflake关于其对子查询的有限支持的文档表示,它支持“WHERE 子句中的 EXISTS、ANY / ALL 和 IN 子查询”的相关和不相关子查询。

那么为什么 EXISTS 子句会失败呢?我看到的是一个错误,还是这是一个没有明确记录的 Snowflake 限制?

重现问题的代码:

CREATE OR REPLACE TEMPORARY TABLE Employee (
   Emp_SK INT NOT NULL
);

CREATE OR REPLACE TEMPORARY TABLE Employee_X_Pay_Rate (
   Emp_SK INT NOT NULL, Pay_Rate_SK INT NOT NULL, Start_Date …
Run Code Online (Sandbox Code Playgroud)

sql correlated-subquery snowflake-cloud-data-platform

10
推荐指数
1
解决办法
4825
查看次数