假设有
表T1
ID CONTENT
1 A
2 B
3 C
4 D
... ...
现在想做一个存储过程,首先将表T1的ID全部查询出来,然后新建一张表T2,结构如下(第一行为字段名)
1 2 3 4 5 ...
NULL NULL NULL NULL NULL ...
也就是把在T1表中查询出的ID值作为新表T2的字段名
各位大哥能解答一下吗,谢谢啦!
表T1
ID CONTENT
1 A
2 B
3 C
4 D
... ...
现在想做一个存储过程,首先将表T1的ID全部查询出来,然后新建一张表T2,结构如下(第一行为字段名)
1 2 3 4 5 ...
NULL NULL NULL NULL NULL ...
也就是把在T1表中查询出的ID值作为新表T2的字段名
各位大哥能解答一下吗,谢谢啦!
解决方案 »
- SQL 语句
- 无法发现microsoft sql server native client
- T-SQL问题
- 在sp里开始用了SET NOCOUNT ON后,最后必须SET NOCOUNT OFF吗?
- 求一句 含like关键字 简单的SQL语句 (pubs库titles表中, title notes 含 aa字符串的语句 的记录)
- 如何追踪sqlserver的死锁?
- 恭喜新MVP 彭大力同志
- SQL SERVER TCP/IP的1433端口号是如何应用的?
- 高分 求进销存的SQL
- 免费电脑培训(VC,Java,Oracle,SQL Server,MCSD,SCJP)
- 关于sql语句的分组问题,着急啊,谢谢前辈们了
- 请问sql数据库怎么修复所有者
declare @表T1 table (ID int,CONTENT varchar(1))
insert into @表T1
select 1,'A' union all
select 2,'B' union all
select 3,'C' union all
select 4,'D'declare @sql varchar(300)
set @sql='create table t2('
select @sql=@sql+'['+cast(ID as varchar(4))+'] INT ,' from @表T1
set @sql=substring(@sql,1,len(@sql)-2)+')'
/*
select @sql
结果:create table t2([1] INT ,[2] INT ,[3] INT ,[4] INT)
*/
exec(@sql)
declare @表T1 table (ID int,CONTENT varchar(1))
insert into @表T1
select 1,'A' union all
select 2,'B' union all
select 3,'C' union all
select 4,'D' union all
select 5,'E'declare @sql varchar(max)--安全起见这改成max
set @sql='create table t2('
select @sql=@sql+'['+cast(ID as varchar(4))+'] INT ,' from @表T1
set @sql=substring(@sql,1,len(@sql)-2)+')'
select @sql
/*
结果:create table t2([1] INT ,[2] INT ,[3] INT ,[4] INT ,[5] INT)
--数据表中有几条这个位置就自动添加了,不需要手动处理
*/
--exec(@sql)
select 1,'A' union all
select 2,'B' union all
select 3,'C' union all
select 4,'D' union all
select 5,'E'你这里写到5就出5个字段
我是希望能够在 select ID from T1 之后,把ID的值用某种方法做成T2的字段
declare @表T1 table (ID varchar(max),CONTENT varchar(1))--循环插入数据
declare @i int
set @i=1
while @i<=100
begin
insert into @表T1
select @i,'A'
set @i=@i+1
enddeclare @sql varchar(max)--安全起见这改成max
set @sql='create table t2('
select @sql=@sql+'['+cast(ID as varchar(max))+'] varchar(max) ,' from @表T1
set @sql=substring(@sql,1,len(@sql)-2)+')'
select @sql
/*
create table t2([1] varchar(max) ,[2] varchar(max) ,[3] varchar(max) ,[4] varchar(max) ,[5] varchar(max) ,
[6] varchar(max) ,[7] varchar(max) ,[8] varchar(max) ,[9] varchar(max) ,[10] varchar(max) ,[11] varchar(max) ,
[12] varchar(max) ,[13] varchar(max) ,[14] varchar(max) ,[15] varchar(max) ,[16] varchar(max) ,[17] varchar(max) ,
[18] varchar(max) ,[19] varchar(max) ,[20] varchar(max) ,[21] varchar(max) ,[22] varchar(max) ,[23] varchar(max) ,
[24] varchar(max) ,[25] varchar(max) ,[26] varchar(max) ,[27] varchar(max) ,[28] varchar(max) ,[29] varchar(max) ,
[30] varchar(max) ,[31] varchar(max) ,[32] varchar(max) ,[33] varchar(max) ,[34] varchar(max) ,[35] varchar(max) ,
[36] varchar(max) ,[37] varchar(max) ,[38] varchar(max) ,[39] varchar(max) ,[40] varchar(max) ,[41] varchar(max) ,
[42] varchar(max) ,[43] varchar(max) ,[44] varchar(max) ,[45] varchar(max) ,[46] varchar(max) ,[47] varchar(max) ,
[48] varchar(max) ,[49] varchar(max) ,[50] varchar(max) ,[51] varchar(max) ,[52] varchar(max) ,[53] varchar(max) ,
[54] varchar(max) ,[55] varchar(max) ,[56] varchar(max) ,[57] varchar(max) ,[58] varchar(max) ,[59] varchar(max) ,
[60] varchar(max) ,[61] varchar(max) ,[62] varchar(max) ,[63] varchar(max) ,[64] varchar(max) ,[65] varchar(max) ,
[66] varchar(max) ,[67] varchar(max) ,[68] varchar(max) ,[69] varchar(max) ,[70] varchar(max) ,[71] varchar(max) ,
[72] varchar(max) ,[73] varchar(max) ,[74] varchar(max) ,[75] varchar(max) ,[76] varchar(max) ,[77] varchar(max) ,
[78] varchar(max) ,[79] varchar(max) ,[80] varchar(max) ,[81] varchar(max) ,[82] varchar(max) ,[83] varchar(max) ,
[84] varchar(max) ,[85] varchar(max) ,[86] varchar(max) ,[87] varchar(max) ,[88] varchar(max) ,[89] varchar(max) ,
[90] varchar(max) ,[91] varchar(max) ,[92] varchar(max) ,[93] varchar(max) ,[94] varchar(max) ,[95] varchar(max) ,
[96] varchar(max) ,[97] varchar(max) ,[98] varchar(max) ,[99] varchar(max) ,[100] varchar(max))
*/明白了吗?
declare @sql varchar(max)
set @sql='create table t2('
select @sql=@sql+'['+cast(ID as varchar(max))+'] varchar(max) ,' from T1 --你的T1表名
set @sql=substring(@sql,1,len(@sql)-2)+')'
select @sql你把你的T1表名,对应上,运行一下就看明白了
exec(@sql)是执行@sql字符串