假如一张表中有以下数据
id   num   date 
1    2     2011-08-01
1    3     2011-08-02
1    5     2011-08-03
2    1     2011-08-01
2    3     2011-08-02
2    5     2011-08-03我想改成这样的
id   num   date 
1    1     2011-08-01
1    2     2011-08-02
1    3     2011-08-03
2    1     2011-08-01
2    2     2011-08-02
2    3     2011-08-03
num根据同一个ID的不同时间给他重新排序。

解决方案 »

  1.   

    with t as(
    select '1' id ,to_date('2011-08-01','yyyy-MM-dd') d from dual
    union all
    select '1' id ,to_date('2011-08-02','yyyy-MM-dd') d from dual
    union all
    select '1' id ,to_date('2011-08-03','yyyy-MM-dd') d from dual
    union all
    select '2' id ,to_date('2011-08-01','yyyy-MM-dd') d from dual
    union all
    select '2' id ,to_date('2011-08-02','yyyy-MM-dd') d from dual
    union all
    select '2' id ,to_date('2011-08-03','yyyy-MM-dd') d from dual
    )select t.id,row_number() over(partition by t.id order by t.d),t.d
    from t
      

  2.   


    只要这句就行了  select t.id,row_number() over(partition by t.id order by t.d),t.d
    from t写那个是方便直接看下结果·~
      

  3.   

    1楼正解  能用SQL实现尽量用单条SQL  不建议用游标实现
      

  4.   

    试过了 ,好像不行啊row_number() over 报错
      

  5.   

    那就直接把日期里面的天更新到num不就可以了。