
第一种写法:
select t.tj_agid, t.tj_fwork_ym
from tbl_dcs_jyyc_rpt t,
(select tj_agid, max(tj_ym) maxym
from tbl_dcs_jyyc_rpt
where tj_ismanager = '1'
group by tj_agid) k
where t.tj_ym = k.maxym
and t.tj_agid = k.tj_agid
and t.tj_ismanager = '1'
and t.tj_fwork_ym is not null;
第二种写法(更好的写法,只扫描一次表)
select t1.tj_agid, t1.tj_fwork_ym from
(select t.tj_agid,
t.tj_fwork_ym,
row_number() over(partition by t.tj_agid order by t.tj_upddate desc) as seq
from tbl_dcs_jyyc_rpt t where t.tj_ismanager = '1') t1 where t1.seq = 1 and t1.tj_fwork_ym is not null
本文介绍两种查询每个分组最新记录的方法。第一种通过子查询找出每个分组的最大日期,再进行外部连接;第二种利用窗口函数ROW_NUMBER进行优化,仅扫描一次表即可完成查询。
325

被折叠的 条评论
为什么被折叠?



