如何从select语句创建表?
例如,我有格式表如下:
FormatID Label
1 ID
2 Name
3 DOB
所以我想创建一个列名为ID,Name,DOB的新表。
任何指针都会受到赞赏。
答案 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)
由于