从查询结果行创建表

时间:2011-08-15 11:11:27

标签: sql-server sql-server-2005

在SQL Server 2005中,我需要根据查询返回的动态创建表。

例如:

SELECT * FROM TableA 

返回以下行

  1. 用名字
  2. DOB
  3. 我想要一个像这样创建的表:

    Forename, Surname, DOB.
    

    我计划在许多不同的源上使用此过程,因此每次返回的行都不同。

    非常感谢

2 个答案:

答案 0 :(得分:0)

我会将SELECT INTOPIVOT结合使用:

请参阅:

我现在无权访问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