我的桌子是这样的:
appl_db_srvr_xref_id secrty_ctl_id assmt_dt cmdb_id secrty_ctl_elemnt_impmtn_cd
180 43 1/1/2018 227 N
180 43 9/31/2018 227 Y
179 28 1/1/2018 710 N
179 29 2/2/2018 710 N
179 43 3/3/2018 710 N我需要的是按日期进行分组(appl_db_srvr_xref_id、secrty_ctl_id和cmdb_id),并返回最新的行。因此,在这个例子中,我想返回:
180 43 227 Y
179 28 710 N
179 29 710 N
179 43 710 N我想要的是:
SELECT secrty_ctl_id,
appl_db_srvr_xref_id,
cmdb_id,
assmt_dt
FROM tablename
GROUP BY
secrty_ctl_id,
appl_db_srvr_xref_id,
cmdb_id
ORDER BY assmt_dt desc发布于 2018-09-06 18:05:53
使用row_number()解析函数:
select
secrty_ctl_id,
appl_db_srvr_xref_id,
cmdb_id,
assmt_dt
from
(
SELECT secrty_ctl_id,
appl_db_srvr_xref_id,
cmdb_id,
assmt_dt,
row_number() over (partition by appl_db_srvr_xref_id, secrty_ctl_id, cmdb_id order by assmt_dt desc) rn
FROM tablename
)s
where rn=1;https://stackoverflow.com/questions/52209726
复制相似问题