如果我有一张A表 (a1,a2,a3)
想让其中的数据变成以下方式排列 (a3是随着 a1和a2的重复数的多少来算的,重复了3次就从1排到3)a1  a2  a310  abc  1
20  abc  1
20  abc  2
20  abc  3
23  shf  1
23  shf  2你看这里应该用个什么方法呢?看清楚了再回答啊 

解决方案 »

  1.   

    select a1,a2,row_number() over(partition by a1,a2 order by a1,a2) a3 from a
      

  2.   

    我首先觉得为什么要把更新和检索扯到一起呢
    你该怎么更新就怎么更新
    更新后用我上面的sql检索一下就是你想要得结果啊
      

  3.   

    以前hebo2005写的是对的啊不知道你还想要什么样的?
    UPDATE a
       SET a3 = 
    (
    select 
    ROW_NUMBER () OVER (PARTITION BY b.a1, b.a2 ORDER BY b.a1, b.a2)
    from  a b
    where a.rowid=b.rowid)
      

  4.   

    下面的可以:
    UPDATE A
       SET A3 = (SELECT RN
                   FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A1, A2 ORDER BY A1, A2) RN,
                                ROWID
                           FROM A) B
                  WHERE A.ROWID = B.ROWID);
      

  5.   

    估计楼主的是8,不支持row_number