我有以下查询,返回每个src_sys_id对应的最大时间戳记录。
选择不同的s1.src_sys_id, s1.execn_ts, s3.cd_id, s4.appl_nm, s1.st_mgmnt_cd!=“ PURGE”时的情况为“进行中”,否则为“符合”结束 来自dlrm_data_retention.ret_st_aud s1 内部联接 ( 选择src_sys_id,max(execn_ts)作为maxtime 从dlrm_data_retention.ret_st_aud GROUP BY 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,
s1.st_mgmnt_cd!=“ PURGE”时的情况为“进行中”,否则为“符合”结束
来自dlrm_data_retention.ret_st_aud s1 JOIN table3 s3 JOIN table4 s4
开启s1.src_sys_id = s3.src_sys_id和s3.cd_id = s4.cd_id
内部联接
(
选择src_sys_id,max(execn_ts)作为maxtime
从dlrm_data_retention.ret_st_aud
GROUP BY src_sys_id
)s2在s2.src_sys_id = s1.src_sys_id和s1.execn_ts = s2.maxtime
答案 0 :(得分:0)
希望这会有所帮助。
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