【问题标题】:Join multiple Tables for View with aggregation通过聚合加入多个表以查看视图
【发布时间】:2018-12-04 01:38:47
【问题描述】:

我有以下查询,它返回每个 src_sys_id 对应的最大时间戳记录。

选择不同的 s1.src_sys_id, s1.execn_ts, s3.cd_id, s4.appl_nm, CASE WHEN s1.st_mgmnt_cd != "PURGE" THEN 'In-Progress' ELSE 'In-Compliance' END 作为状态 来自 dlrm_data_retention.ret_st_aud s1 内部联接 ( 选择 src_sys_id, max(execn_ts) 作为 maxtime FROM dlrm_data_retention.ret_st_aud 按 src_sys_id 分组 ) s2 上 ​​s2.src_sys_id = s1.src_sys_id 和 s1.execn_ts = s2.maxtime

我怎样才能将此查询与其他表结合起来以获取与此 src_sys_id 对应的更多列。

table3 - 这个有 src_sys_id 和 cd_id table4 - 这有 cd_id 和 src_name。

我需要将 cd_id 和 src_name 列也作为我的选择语句的一部分。

我尝试了以下。它不返回任何结果。

选择不同的 s1.src_sys_id, s1.execn_ts, CASE WHEN s1.st_mgmnt_cd != "PURGE" THEN 'In-Progress' ELSE 'In-Compliance' END 作为状态 从 dlrm_data_retention.ret_st_aud s1 JOIN table3 s3 JOIN table4 s4 ON s1.src_sys_id = s3.src_sys_id AND s3.cd_id = s4.cd_id
内部联接 ( 选择 src_sys_id, max(execn_ts) 作为 maxtime FROM dlrm_data_retention.ret_st_aud 按 src_sys_id 分组 ) s2 上 ​​s2.src_sys_id = s1.src_sys_id 和 s1.execn_ts = s2.maxtime

【问题讨论】:

    标签: sql impala


    【解决方案1】:

    希望这会有所帮助..

        select distinct s1.src_sys_id,
        s1.execn_ts,
        CASE WHEN s1.st_mgmnt_cd != "PURGE" 
        THEN 'In-Progress' 
        ELSE 'In-Compliance' 
        END as Status
    
        from dlrm_data_retention.ret_st_aud As  s1 
    
        JOIN table3 As s3 ON s3.src_sys_id = s1.src_sys_id 
    
        JOIN table4 As s4 ON  s4.cd_id = s3.cd_id    
    
        inner join 
        (
          SELECT src_sys_id, max(execn_ts) as maxtime
          FROM dlrm_data_retention.ret_st_aud 
          GROUP BY src_sys_id 
         ) As s2 on s2.src_sys_id = s1.src_sys_id and s1.execn_ts = s2.maxtime     
    

    【讨论】:

    • 谢谢 Samuel..查询似乎没有运行..它没有显示任何错误消息。
    • 非常感谢塞缪尔! -- 查询运行了,但是运行了将近一个小时。
    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 2023-03-06
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多