根据一个字段,重复的都给它一个自增编码。如表text:
字段一      字段二 
80           i
80           h
80           j
···
90           k
90           h
90           i
···用select语句 增加一个字段三变成:字段三给字段一相同的编序号。
字段一      字段二    字段三
80            i        2
80            h        3
80            j        4
···
90            k        2
90            h        3
90            i        4
····
不知道大神明白了我的意思了没有。根据字段一相同的,给他编号。从2开始编号,在oracle数据库里面的。
真的不好意思,最高只能给一百分。系统限制了。oracle数据库select语句

解决方案 »

  1.   

    会分析函数的话,这个 需求就很easy了with t as
     (select 80 "字段一", 'i' "字段二"
        from dual
      union all
      select 80, 'j'
        from dual
      union all
      select 80, 'k'
        from dual
      union all
      select 90, 'i'
        from dual
      union all
      select 90, 'j'
        from dual
      union all
      select 90, 'k' from dual)
    select t.*,
           row_number() over(partition by 字段一 order by 字段二) + 1 字段三
      from t;
      

  2.   

    分析函数row_number() over() oracle中的常用的排名函数:rank,dense_rank,row_number,以及分组排名partition
    rank:排名会出现并列第n名,它之后的会跳过空出的名次,例如:1,2,2,4
    dense_rank:排名会出现并列第n名,它之后的名次为n+1,例如:1,2,2,3
    row_number:排名采用唯一序号连续值,例如1,2,3,4
    partition:将排名限制到某一分组
      

  3.   

    不会吧,80 ,90 ···这字段很多的,几百个。怎么写这SQL呀
      

  4.   


    select 字段一,字段二,
           row_number() over(partition by 字段一 order by 字段二) + 1 字段三
    from text;       字段一 字段二        字段三
    ---------- ------ ----------
            80 i               2
            80 j               3
            80 k               4
            90 i               2
            90 j               3
            90 k               4