各位好:
公司内元数据库内的每一条记录,都有一个唯一的序列号,但是系统升级后,部分记录的
序列号重复了,需要序列号与补充信息列合并后,才能转换得到一个唯一值。
如下中的Col1为序列号,Col2为补充信息列。
目前先实现一个临时表,零时表的Col1为原表中Col1的扩充,即在原表的Col1后增加两位,
发生重复的信息,即递增,以得到唯一的序列号。
因为表格的数据量很大,每10分钟就有1万条左右,每次计算汇总的是2个小时的数据,请
问各位有没有比较高效率的算法可以实现呢,谢谢。
原有表格
Col1    Col2
001       A
001       B
001       C
002       D
002       E
003       A
004       B
004       A需专换为
Col1    Col2
00101   A
00102   B
00103   C
00201   D
00202   E
00301   A
00401   B
00402   A

解决方案 »

  1.   


    update 表名 set col1=col1+
    (select right('00'+ltrim(count(1)),2) from 表名 where col1=a.col1 and col2<=a.col2)
    from 表名 a
      

  2.   

    update a
    set Col1=Col1+(select right(100+count(1),2) from [Table] where Col1=a.Col1 and Col2<=a.Col2)
    from [Table] a
      

  3.   

    update a
    set Col1=Col1+(select right(100+count(1),2) from [Table] where Col1=a.Col1 and Col2<=a.Col2)
    from [Table] a
      

  4.   


    select col1,col2,col1+right(cast((100+Rline) as varchar),2) as col4  from (
     select col1,col2,row_number() over(partition by col1 order by  col1 asc) as Rline from tb) as a
    --col4就是变动后的col1