各位好:
公司内元数据库内的每一条记录,都有一个唯一的序列号,但是系统升级后,部分记录的
序列号重复了,需要序列号与补充信息列合并后,才能转换得到一个唯一值。
如下中的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
公司内元数据库内的每一条记录,都有一个唯一的序列号,但是系统升级后,部分记录的
序列号重复了,需要序列号与补充信息列合并后,才能转换得到一个唯一值。
如下中的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
update 表名 set col1=col1+
(select right('00'+ltrim(count(1)),2) from 表名 where col1=a.col1 and col2<=a.col2)
from 表名 a
set Col1=Col1+(select right(100+count(1),2) from [Table] where Col1=a.Col1 and Col2<=a.Col2)
from [Table] a
set Col1=Col1+(select right(100+count(1),2) from [Table] where Col1=a.Col1 and Col2<=a.Col2)
from [Table] a
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