【发布时间】:2018-07-16 18:58:15
【问题描述】:
我有下表,我需要在每个源和表中获取具有最新时间戳的记录。 时间戳为 Unix 格式,1531204200 为最新时间戳。
上表数据如下:
src_sys_id st_mgmnt_cd tblnm execn_ts rcd_cnt
SOURCE1 HOT SUBSCRBR_ACCT_HIST 1531204200 28680
SOURCE1 COLD SUBSCRBR_ACCT_HIST 1531204200 11874
SOURCE1 WARM MEMBR_HIST 1531204200 13698
SOURCE1 WARM SUBSCRBR_ACCT_HIST 1531204200 24211
SOURCE1 HOT MEMBR_HIST 1531204200 18500
SOURCE2 FINAL CLAIM 1531204200 5000
SOURCE2 EXPIRED CLAIM 1531204200 8000
SOURCE2 WARM CLAIM 1531204200 20000
SOURCE2 HOT CLAIM 1531204200 45000
SOURCE2 COLD CLAIM 1531204200 10000
SOURCE3 WARM INDIV_CVRG 1531204200 2763
SOURCE3 HOT INDIV_CVRG 1531204200 11874
SOURCE1 HOT MEMBR_HIST 1528650875 32198
SOURCE2 WARM CLAIM 1528650875 28000
SOURCE2 HOT CLAIM 1528650875 60000
SOURCE3 HOT INDIV_CVRG 1528650875 14637
预期输出如下:
src_sys_id st_mgmnt_cd tblnm execn_ts rcd_cnt
SOURCE1 HOT SUBSCRBR_ACCT_HIST 1531204200 28680
SOURCE1 COLD SUBSCRBR_ACCT_HIST 1531204200 11874
SOURCE1 WARM MEMBR_HIST 1531204200 13698
SOURCE1 WARM SUBSCRBR_ACCT_HIST 1531204200 24211
SOURCE1 HOT MEMBR_HIST 1531204200 18500
SOURCE2 FINAL CLAIM 1531204200 5000
SOURCE2 EXPIRED CLAIM 1531204200 8000
SOURCE2 WARM CLAIM 1531204200 20000
SOURCE2 HOT CLAIM 1531204200 45000
SOURCE2 COLD CLAIM 1531204200 10000
SOURCE3 WARM INDIV_CVRG 1531204200 2763
SOURCE3 HOT INDIV_CVRG 1531204200 11874
我用下面的查询
Select distinct s1.src_sys_id ,
s1.st_mgmnt_cd,
from_unixtime(CAST(s2.execn_ts AS BIGINT)) as assessment_dt,
s1.rcd_cnt
from dlrm_data_retention.ret_st_mgmnt_sum s1
INNER JOIN
( select src_sys_id,st_mgmnt_cd,rcd_cnt,execn_ts,row_number() over (partition by src_sys_id order by execn_ts desc) as seqnum
from dlrm_data_retention.ret_st_mgmnt_sum
) s2
on s1.src_sys_id = s2.src_sys_id and s2.seqnum = 1
这不会产生结果。任何帮助表示赞赏。
【问题讨论】: