update Temp_Calc_data
set column1 = Temp_Submit_Data.account
from Temp_Calc_data,Temp_Submit_Data
where Temp_Calc_data.id = Temp_Submit_Data.id and Temp_Submit_Data.mediasort='01'其他以此类推
set column1 = Temp_Submit_Data.account
from Temp_Calc_data,Temp_Submit_Data
where Temp_Calc_data.id = Temp_Submit_Data.id and Temp_Submit_Data.mediasort='01'其他以此类推
http://community.csdn.net/Expert/topic/5253/5253943.xml?temp=.5902063
差不多的例子
declare @max varchar(50)
declare @id int
declare @str varchar(8000)
set @id=1
set @str=''
select @max=max(mediasort) from Temp_Submit_Data
while @id<=cast(@max as int)
begin
set @str=@str+'
update Temp_Calc_data set column'+cast(@id as varchar(10))+' = Temp_Submit_Data.account
from Temp_Calc_data,Temp_Submit_Data
where Temp_Calc_data.id = Temp_Submit_Data.id
and Temp_Calc_data.submitsort = Temp_Submit_Data.submitsort and Temp_Submit_Data.mediasort=''0'+cast(@id as varchar(10))+''''
set @id=@id+1
end
exec(@str)
go
同一个问题在oracle版上的答复我觉得也相当不错,可以一条语句实现,有兴趣的朋友可以过去瞧瞧,不过sqlserver中好象没有decode这个函数,decode和case差不多的可以用case代替.
我决定采用gc_ding(E.T) 的方法这样子效率会比较好