表中的CustomerCode排序是错乱的,我们要处理这批数据,
1.写SQL语句取CustomerCode列中后五位的数字结构的最大值2.生成新的编码方式插入到NewCode,编码方式要求采用C00001的形式,
其中C是固定的,后面五位按照CustomerCode列后五位的升序,从1开始

解决方案 »

  1.   

    select t.*,'C'||lpad(row_number() over(order by to_number(substr(t.aaa,length(t.aaa)-4))),'5','0') cn
     from t_aa t ;
    参考这个,自己改改吧。
      

  2.   

    update t_aa t
       set t.a_path =
           (select cn
              from (select 'C' ||
                           lpad(row_number()
                                over(order by
                                     to_number(substr(a.aaa, length(a.aaa) - 4))),
                                '5',
                                '0') as cn,
                           a.id
                      from t_aa a) tmp
             where t.id = tmp.id);
    我建的测试表,这个语句就行了
    改下对应的字段名和表名。
      

  3.   

    需要根据id 更新还是 把生成的newcode 直接按从大到小的顺序写进去就可以了?
      

  4.   

    第一个 SELECT MAX(TO_NUMBER(SUBSTR(customercode,-5))) as maxnum from t
      

  5.   


    把第一问新生成的编码,插入到NewCode这个列中,编码方式要求采用C00001的形式,
    其中C是固定的,后面五位按照CustomerCode列后五位的升序,从1开始,按照升序排序
      

  6.   


    把第一问新生成的编码,插入到NewCode这个列中,编码方式要求采用C00001的形式,
    其中C是固定的,后面五位按照CustomerCode列后五位的升序,从1开始,按照升序排序
    我的意思是 例如id等于 2 的那个newcode应该是C10003,   假如id=100的是 C00002,你要的后面结果是 id=2是 C10003还是排序后的第二个值C00002
      

  7.   


    把第一问新生成的编码,插入到NewCode这个列中,编码方式要求采用C00001的形式,
    其中C是固定的,后面五位按照CustomerCode列后五位的升序,从1开始,按照升序排序
    我给的sql不就可以满足你的要求么,你执行看下就知道了啊