FA       FB       FC(field)
a c1 9
a c2 3
a c9 5
b c2 8
b c1 5
b c4 9
得到
FA       FB       FC(field)
a c1 9
a c9 5
b c4 9
b c2 8
即每组(FA栏位a,b)取FC栏位前两个值的记录,并按由大到小排列。

解决方案 »

  1.   

    描述的不清楚.很难知道你的需求select FA,FB,FC from Table group by Fa,Bb,Fc order by fc
      

  2.   

    select * from
    (select t.*,rank() over(partition by FA order by FC desc) rn from table t)
    where rn<3
      

  3.   

    是首先按照FA分组,取得每组中FC最大的前两笔记录。
      

  4.   

    select * from
    (select t.*,rank() over(partition by FA order by FC desc) rn from table t)
    where rn<3 order by FA asc,FC desc;
      

  5.   

    这个写sql有点复杂了,这个算法或许能够用上:
     select MOD(ROWNUM-1,a.rn)+1 ,....
     
     order by ....,MOD(ROWNUM-1,a.rn)+1
      

  6.   

    内核也应该是:
     select t.*,rank() over(partition by substr(FA,1,1) order by FC desc ) rn from table t