首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Exasol中的相关子查询

Exasol中的相关子查询
EN

Stack Overflow用户
提问于 2020-02-22 11:54:52
回答 1查看 402关注 0票数 0

我尝试在Exasol数据库中使用SQL编写一个子查询。这个问题类似于这个线程(SQL Query - join on less than or equal date),代码在mysql和postgres中运行良好。但是,当我将代码移到Exasol时,它显示SQL Error 42000: correlation in on子句。我想知道是否有任何替代方案来解决这个问题,或者我如何在Exasol中解决它?

代码语言:javascript
复制
    SELECT a.ID, 
           a.join_date,
           a.country, 
           a.email,
           b.start_date,
           b.joined_from
      FROM a 
 LEFT JOIN b 
        ON a.country = b.country 
       AND b.start_date = (
           SELECT MAX(start_date) 
             FROM b b2 
            WHERE b2.country = a.country 
              AND b2.start_date <= a.join_date
           );
EN

回答 1

Stack Overflow用户

发布于 2020-02-26 20:18:22

尽管Exasol上不支持相关查询,但可以使用DENSE_RANK() SQL function解决此要求,如下所示

代码语言:javascript
复制
with cte as (
        select
               a.ID, a.join_date, a.country, a.email, b.start_date, b.joined_from,
               dense_rank() over (partition by b.country order by b.start_date desc) r1
        from a
        left join b
                on a.country = b.country
)
select * from cte where r1 = 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60348865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档