表如下:
ID A B C A1 B1 C1 A2 B2 C3 An Bn Cn
1 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
2 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
3 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
4 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
5 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
假设n=50
想得到的效果是:
ID A B C A1 B1 C1 A2 B2 C3 An Bn Cn
1 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
2 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
3 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
4 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
5 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
ID A B C A1 B1 C1 A2 B2 C3 An Bn Cn
1 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
2 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
3 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
4 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
5 NULL NULL NULL NULL NULL NULL NULL NULL NULL 。
假设n=50
想得到的效果是:
ID A B C A1 B1 C1 A2 B2 C3 An Bn Cn
1 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
2 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
3 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
4 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
5 红色 黄色 黑色 绿色 蓝色 白色 白色 灰色 绿色 。
select *,count(*) into #tmp from tb where A is not nulldeclare @i int,@j int
set @i = 1;
select @j = count(*) over() from tb;truncate table tb;while @i <= @j
begin
insert tb select @i,* from #tmp;
set @i = @i + 1;
endend
利用表syscolumns,做一个自动匹配的更新列
declare @stmt varchar(2000);
declare @id int;set @id=1;
where @id<=50
begin
set @stmt='update t1 set a=t2.a, b=t2.b, c=t2.c, '+
'a'+ltrim(@id)+'=t2.a'+ltrim(@id)+','+
'b'+ltrim(@id)+'=t2.b'+ltrim(@id)+','+
'c'+ltrim(@id)+'=t2.c'+ltrim(@id);
end
set @stmt=@stmt+' from tb t1,(select * from tb where id=2) t2';exec(@stmt);
declare @id int;
set @id=1;
set @stmt=''
while @id<=50
begin
set @stmt=ISNULL(@stmt+',',',')+ 'a'+ltrim(@id)+'=t2.a'+ltrim(@id)+','+
'b'+ltrim(@id)+'=t2.b'+ltrim(@id)+','+
'c'+ltrim(@id)+'=t2.c'+ltrim(@id)+CHAR(13)
set @id = @id +1
end
set @stmt='update t1 set a=t2.a, b=t2.b, c=t2.c'+@stmt+' from tb t1,(select * from tb where id=2) t2';
print @stmt
--exec(@stmt);
/*
update t1 set a=t2.a, b=t2.b, c=t2.c
,a1=t2.a1,b1=t2.b1,c1=t2.c1
,a2=t2.a2,b2=t2.b2,c2=t2.c2
,a3=t2.a3,b3=t2.b3,c3=t2.c3
,a4=t2.a4,b4=t2.b4,c4=t2.c4
,a5=t2.a5,b5=t2.b5,c5=t2.c5
,a6=t2.a6,b6=t2.b6,c6=t2.c6
,a7=t2.a7,b7=t2.b7,c7=t2.c7
,a8=t2.a8,b8=t2.b8,c8=t2.c8
,a9=t2.a9,b9=t2.b9,c9=t2.c9
,a10=t2.a10,b10=t2.b10,c10=t2.c10
,a11=t2.a11,b11=t2.b11,c11=t2.c11
,a12=t2.a12,b12=t2.b12,c12=t2.c12
,a13=t2.a13,b13=t2.b13,c13=t2.c13
,a14=t2.a14,b14=t2.b14,c14=t2.c14
,a15=t2.a15,b15=t2.b15,c15=t2.c15
,a16=t2.a16,b16=t2.b16,c16=t2.c16
,a17=t2.a17,b17=t2.b17,c17=t2.c17
,a18=t2.a18,b18=t2.b18,c18=t2.c18
,a19=t2.a19,b19=t2.b19,c19=t2.c19
,a20=t2.a20,b20=t2.b20,c20=t2.c20
,a21=t2.a21,b21=t2.b21,c21=t2.c21
,a22=t2.a22,b22=t2.b22,c22=t2.c22
,a23=t2.a23,b23=t2.b23,c23=t2.c23
,a24=t2.a24,b24=t2.b24,c24=t2.c24
,a25=t2.a25,b25=t2.b25,c25=t2.c25
,a26=t2.a26,b26=t2.b26,c26=t2.c26
,a27=t2.a27,b27=t2.b27,c27=t2.c27
,a28=t2.a28,b28=t2.b28,c28=t2.c28
,a29=t2.a29,b29=t2.b29,c29=t2.c29
,a30=t2.a30,b30=t2.b30,c30=t2.c30
,a31=t2.a31,b31=t2.b31,c31=t2.c31
,a32=t2.a32,b32=t2.b32,c32=t2.c32
,a33=t2.a33,b33=t2.b33,c33=t2.c33
,a34=t2.a34,b34=t2.b34,c34=t2.c34
,a35=t2.a35,b35=t2.b35,c35=t2.c35
,a36=t2.a36,b36=t2.b36,c36=t2.c36
,a37=t2.a37,b37=t2.b37,c37=t2.c37
,a38=t2.a38,b38=t2.b38,c38=t2.c38
,a39=t2.a39,b39=t2.b39,c39=t2.c39
,a40=t2.a40,b40=t2.b40,c40=t2.c40
,a41=t2.a41,b41=t2.b41,c41=t2.c41
,a42=t2.a42,b42=t2.b42,c42=t2.c42
,a43=t2.a43,b43=t2.b43,c43=t2.c43
,a44=t2.a44,b44=t2.b44,c44=t2.c44
,a45=t2.a45,b45=t2.b45,c45=t2.c45
,a46=t2.a46,b46=t2.b46,c46=t2.c46
,a47=t2.a47,b47=t2.b47,c47=t2.c47
,a48=t2.a48,b48=t2.b48,c48=t2.c48
,a49=t2.a49,b49=t2.b49,c49=t2.c49
,a50=t2.a50,b50=t2.b50,c50=t2.c50
from tb t1,(select * from tb where id=2) t2*/
declare @id int;
set @id=1;
while @id<=50
begin
set @stmt=ISNULL(@stmt+',',',')+ 'a'+ltrim(@id)+'=t2.a'+ltrim(@id)+','+
'b'+ltrim(@id)+'=t2.b'+ltrim(@id)+','+
'c'+ltrim(@id)+'=t2.c'+ltrim(@id)+CHAR(13)
set @id = @id +1
end
set @stmt='update t1 set a=t2.a, b=t2.b, c=t2.c'+@stmt+' from tb t1,(select * from tb where id=2) t2';
print @stmt
--exec(@stmt);
/*
update t1 set a=t2.a, b=t2.b, c=t2.c
,a1=t2.a1,b1=t2.b1,c1=t2.c1
,a2=t2.a2,b2=t2.b2,c2=t2.c2
,a3=t2.a3,b3=t2.b3,c3=t2.c3
,a4=t2.a4,b4=t2.b4,c4=t2.c4
,a5=t2.a5,b5=t2.b5,c5=t2.c5
,a6=t2.a6,b6=t2.b6,c6=t2.c6
,a7=t2.a7,b7=t2.b7,c7=t2.c7
,a8=t2.a8,b8=t2.b8,c8=t2.c8
,a9=t2.a9,b9=t2.b9,c9=t2.c9
,a10=t2.a10,b10=t2.b10,c10=t2.c10
,a11=t2.a11,b11=t2.b11,c11=t2.c11
,a12=t2.a12,b12=t2.b12,c12=t2.c12
,a13=t2.a13,b13=t2.b13,c13=t2.c13
,a14=t2.a14,b14=t2.b14,c14=t2.c14
,a15=t2.a15,b15=t2.b15,c15=t2.c15
,a16=t2.a16,b16=t2.b16,c16=t2.c16
,a17=t2.a17,b17=t2.b17,c17=t2.c17
,a18=t2.a18,b18=t2.b18,c18=t2.c18
,a19=t2.a19,b19=t2.b19,c19=t2.c19
,a20=t2.a20,b20=t2.b20,c20=t2.c20
,a21=t2.a21,b21=t2.b21,c21=t2.c21
,a22=t2.a22,b22=t2.b22,c22=t2.c22
,a23=t2.a23,b23=t2.b23,c23=t2.c23
,a24=t2.a24,b24=t2.b24,c24=t2.c24
,a25=t2.a25,b25=t2.b25,c25=t2.c25
,a26=t2.a26,b26=t2.b26,c26=t2.c26
,a27=t2.a27,b27=t2.b27,c27=t2.c27
,a28=t2.a28,b28=t2.b28,c28=t2.c28
,a29=t2.a29,b29=t2.b29,c29=t2.c29
,a30=t2.a30,b30=t2.b30,c30=t2.c30
,a31=t2.a31,b31=t2.b31,c31=t2.c31
,a32=t2.a32,b32=t2.b32,c32=t2.c32
,a33=t2.a33,b33=t2.b33,c33=t2.c33
,a34=t2.a34,b34=t2.b34,c34=t2.c34
,a35=t2.a35,b35=t2.b35,c35=t2.c35
,a36=t2.a36,b36=t2.b36,c36=t2.c36
,a37=t2.a37,b37=t2.b37,c37=t2.c37
,a38=t2.a38,b38=t2.b38,c38=t2.c38
,a39=t2.a39,b39=t2.b39,c39=t2.c39
,a40=t2.a40,b40=t2.b40,c40=t2.c40
,a41=t2.a41,b41=t2.b41,c41=t2.c41
,a42=t2.a42,b42=t2.b42,c42=t2.c42
,a43=t2.a43,b43=t2.b43,c43=t2.c43
,a44=t2.a44,b44=t2.b44,c44=t2.c44
,a45=t2.a45,b45=t2.b45,c45=t2.c45
,a46=t2.a46,b46=t2.b46,c46=t2.c46
,a47=t2.a47,b47=t2.b47,c47=t2.c47
,a48=t2.a48,b48=t2.b48,c48=t2.c48
,a49=t2.a49,b49=t2.b49,c49=t2.c49
,a50=t2.a50,b50=t2.b50,c50=t2.c50
from tb t1,(select * from tb where id=2) t2*/