比如表A:
A       a
A       b
A       c
B       a
B       b
对两个同时分组编号,得到如下:
A       a          1           1
A       b          1           2
A       c          1           3
B       a          2           1
B       b          2           3
请问各位, 在不进行 select * from ( .. ) 嵌套的时候, 这个sql该怎么写? 

解决方案 »

  1.   

    dense_rank() over(order by a1),
    rank() over(partition by a1 order by a2)
      

  2.   

    试试下面的方案:create table tmp as
    select 'A' as c1,'a' as c2 from dual union all
    select 'A' as c1,'b' as c2 from dual union all
    select 'A' as c1,'c' as c2 from dual union all
    select 'B' as c1,'a' as c2 from dual union all
    select 'B' as c1,'b' as c2 from dual select c1,c2,dense_rank() over(order by c1) as dr, rank() over(partition by c1 order by c2) as rk from tmp;