将 ANSI SQL 相关子查询转换为 Spark SQL

问题描述 投票:0回答:0

我有以下 Oracle 子查询,但在转换为 Spark SQL 时遇到了问题。

SELECT ID,
       ( SELECT v1.COL1
         FROM   VIEW1 v1
         WHERE  v1.COL2 = (SELECT COL2
                           FROM   VIEW2 v2
                           WHERE  v2.ID = v3.ID)
         AND    v1.COL3 = (SELECT v2.COL3
                           FROM   VIEW2 v2
                           WHERE  v2.COL3 = v3.COL3)
       )
FROM   VIEW3 v3

我尝试以以下格式运行它,但子查询返回的不是一行,而是多行:

SELECT v3.id,
       v1.col1
FROM   view3 v3
       LEFT OUTER JOIN view1 v1
       ON (    EXISTS(
                 SELECT 1
                 FROM   view2 v2a
                 WHERE  v2a.col3 = v3.col3
                 AND    v2a.col3 = v1.col3
               )
           AND EXISTS(
                 SELECT 1
                 FROM   view2 v2b
                 WHERE  v2b.id = v3.id
                 AND    v2b.col2 = v1.col2
               )
           )

您知道是否有可以为我进行这些转换的在线工具吗?

apache-spark-sql correlated-subquery ansi-sql
© www.soinside.com 2019 - 2024. All rights reserved.