select * from (select row_number() over(partition by cardno order by times desc) rnum,
cardno,consumedate,cash,times from sells ) t
where t.rnum<6;

解决方案 »

  1.   

    row_number() over(partition by cardno ....)
    是一种分析函数,从oracle8.16版本开始支持这个写法的.
    有兴趣的话可以参考一个expert one on one oracle 第十章.
      

  2.   

    select * from 
    (
    select 
    row_number() over(partition by cardno order by consumedate desc) rnum,
    cardno,consumedate,cash,times from sells 
    ) t
    where t.rnum<6;
      

  3.   

    到官方网站下载 关于分析函数的文档看看
    例如:rank() ,dense_rank(),row_number 等等,有些非常实用。
      

  4.   

    expert one on one oracle,是书名?
      

  5.   

    bzszp(SongZip) 谢谢,学习,马上揭贴
      

  6.   

    expert one on one oracle是经典的oracle书,如果想学好,一定要看看