例如,表格式如下fee area
2     010
3     010
1.5   010
12    020
3     020
2.5   020
……请教如何用SQL语句实现,先将area从小到大排序,然后再将fee从小到大排序,并生成序号,例如上表的结果应该变成:
序号  fee   area
1     1.5   010
2      2    010
3      3    010
1      2.5  020
2      3    020
3      12   020

解决方案 »

  1.   

    select row_number() over (partition by a.area order by a.fee) 序号,a.fee,a.area 
    from a
    order by a.area,a.fee
      

  2.   

    好向不用上1楼那么复杂,直接
    select rownum,a.* from (select * from Ytab order by area asc,fee desc) a
      

  3.   

    select row_number() over (partition by a.area order by a.fee) 序号,a.fee,a.area  
    from a 
    order by a.area,a.fee asc