在SQL Server 2005中,我需要根据查询返回的行动态创建表。
例如:
SELECT * FROM TableA
返回以下行
我想要一个像这样创建的表:
Forename, Surname, DOB.
我计划在许多不同的源上使用此过程,因此每次返回的行都不同。
非常感谢
答案 0 :(得分:0)
我会将SELECT INTO
与PIVOT
结合使用:
请参阅:
我现在无权访问SQL Server,但我会选择这样的(基于上面的链接):
SELECT [0]
INTO TableB
FROM
( SELECT id, colName FROM TableA ) AS SourceTable
PIVOT
( AVG(id) FOR colName IN [0] ) AS PivotTable;
答案 1 :(得分:0)
以下查询创建可以执行的动态sql语句。您可能需要在yourtable中有一个单独的列,该列也具有列的数据类型定义。
declare @sql nvarchar(max)
select @sql = coalesce(@sql + ',
' + yourcolumn + ' varchar(255)',
yourcolumn + ' varchar(255)')
from yourtable
select @sql = 'create table tableA(' + @sql + ')'
--exec sp_executesql @sql
select @sql