select aa.* from (select row_number() over(partition by prj_id order by fnmac_id desc) as rn,
prj_id,fnmac_id,... from tab where ....) aa 
where rn <= 2;

解决方案 »

  1.   

    select ta_id,userro_id,fnmac_id,ta_result,ta_appflag,ta_role,prj_id 
    from tab a where (a.fnmac_id) in (select b.fnmac_id from tab b where b.prj_id = a.prj_id and rownum <=2 order by b.fnmac_id desc)
      

  2.   

    我头大自己写了一个,也能实现,不知道,这样有没有不合理的地方
    select max(fnmc_id),prjid from tab group by prjid
    请大家指教,谢谢楼上两位,大家参与都会有回报的