有这样一组数据 
a 1 
a 1 
a 2 
a 2 
b 1 
b 2
c 1 
等等 
想得到这样的结果 
a 1 0 
a 1 0 
a 2 0 
a 2 0 
b 1 1 
b 2 1
c 1 2 
第三列根据第一列得到值,望达人出手相助啊。多谢了 

解决方案 »

  1.   

    SQL> select a,b,dense_rank()over(order by a)-1 rank from a ;
     
    A                   B       RANK
    ---------- ---------- ----------
    a                   1          0
    a                   1          0
    a                   2          0
    a                   2          0
    b                   1          1
    b                   2          1
    c                   1          2
     
    7 rows selected
      

  2.   

    假设表a,列a,b
    select a.*,(dense_rank() (order by a))-1
    from a
      

  3.   


    select field1,field2, row_number over(partition by field1 order by field2) from yourtable 
      

  4.   


    select t.col1, t.col2, 
    (select count(*) from table t1
    where t1.col1 = t.col1
    )
    from table t