可以这样:
declare @names varchar(4000)
declare @sql varchar(5000)
set @names=''
select @names=@names+','+rtrim(name) +' int' from t1 --这里的int可遗体还成你要的数据类型。
set @sql='create table t2(id int'+@names +')'
exec (@sql)
declare @names varchar(4000)
declare @sql varchar(5000)
set @names=''
select @names=@names+','+rtrim(name) +' int' from t1 --这里的int可遗体还成你要的数据类型。
set @sql='create table t2(id int'+@names +')'
exec (@sql)
我的一个同学遇到过这样一个问题sql server有这样一个扩展存储过程,
他用了铁棒磨针的劲头把这个东东找到了,可惜我不记得了,去找吧,
找到了也告诉我一声。
select rq,dqdm as dqdm,ddm as ddm,sum(je) as je into #hgjk from hgjk group by rq,dqdm,ddm with rollupdrop table #cszhmc//删除需要待建的表;
//找出关键列
select msdm into #cszhmc from cszhmc group by msdm//定义循环初始日期
declare @dd datetime
set @dd='2002.06.01'declare @sql varchar(1000)//开始创建6月份列
while @dd<'2002.07.01'
begin
declare @ddstr char(2)
set @ddstr=datename(dd,@dd)
//增加新列
set @sql='alter table #cszhmc add['+@ddstr+'] money'
exec (@sql)
//更新新建列
set @sql='update #cszhmc set [' +@ddstr+ ']=b.[' +@ddstr+ '] from #cszhmc a,(select ddm,je as [' +@ddstr+ '] from #hgjk where rq='''+convert(varchar(100),@dd,120)+''') b where a.msdm=b.ddm'
exec (@sql)
select @dd=@dd+1
end
select * from #cszhmc
和你要求有点类似,把它改改就可以了