从select语句创建表作为值

时间:2016-06-16 07:53:00

标签: sql sql-server sql-server-2008

如何从select语句创建表?

例如,我有格式表如下:

FormatID Label
1         ID
2         Name
3         DOB

所以我想创建一个列名为ID,Name,DOB的新表。

任何指针都会受到赞赏。

4 个答案:

答案 0 :(得分:1)

你可以做......

   declare @sql as varchar( max) ='';

   declare @cln as  varchar( max) ='';

    select @cln =(    SELECT  Label + '  nvarchar(50)  ,   ' from format  FOR XML PATH('') 
                    );
     set @sql = 'create table  tablename  ( '+  @cln  + '  );
 sp_executesql @sql ;

答案 1 :(得分:1)

@sandeep rawat。谢谢,我修改了一些,我现在可以得到它;)

declare @sql as nvarchar(max) ='';
declare @cln as nvarchar(max) ='';
select @cln =(SELECT REPLACE(label, ' ', '') + ' nvarchar(50),' from format FOR XML PATH('') );
set @cln = substring(@cln,1,len(@cln)-1)            
set @sql = 'create table new_table ('+  @cln + ')';
print @sql
print len(@sql)
exec sp_executesql @sql ;

答案 2 :(得分:1)

你可以尝试这样:

-- build the SQL query
declare @sql nvarchar(max) = ''
select @sql = @sql + '[' + Label + '] nvarchar(255), ' from Format order by FormatID
select @sql = 'create table [MyTable] (' + @sql + ')'

-- create the table
EXECUTE sp_executesql @sql
go

-- lets see if the table actually got created
sp_help MyTable
go

答案 3 :(得分:-2)

这会对你有所帮助

select FormatID,Label into New_table_Name from Table_Name where 1=0;

几乎没有误会。 希望它会对你有所帮助。

create table #Tbl_Format
(FormatId int identity(1,1),
Lebel Varchar(64)
)

insert into #Tbl_Format
values('Id'),('Name'),('DOB')

Declare @Query nvarchar(512)
SET @Query= (SELECT ', ' + Lebel+' NVARCHAR(64)'
            FROM #Tbl_Format 

            FOR XML PATH(''))

SET @Query='CREATE TABLE Table_Name ('+Substring(@Query,2,LEN(@Query))+')'
EXEC (@Query)

由于