row_number() over获取每类中最新的一条记录

 



 

第一种写法:

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

 

猜你喜欢

转载自weigang-gao.iteye.com/blog/2236919
今日推荐