我可以用SELECT语句返回一个名称与另一个表的字段值相似的列的表吗

时间:2020-09-17 08:30:21

标签: sql sql-server tsql

Question Image

执行此脚本时,出现语法错误。怎么了?

use TEST
go

CREATE TABLE newTagsTable 
( 
     (SELECT TEST.dbo.dynamicTags.Alais 
      FROM TEST.dbo.dynamicTags 
      WHERE ID = 2) varchar(200)
);

1 个答案:

答案 0 :(得分:0)

这是您需要的吗?

SELECT Alais 
into newTagsTable 
FROM dynamicTags 
WHERE ID = 2;

DEMO

好,然后这样:

create procedure test_proc
as
declare @p_sql varchar(2000);
declare @p_sql_2 varchar(2000);
declare @getid CURSOR;

SET @getid = CURSOR FOR
SELECT Alais
FROM   dynamicTags;

begin
    set @p_sql = 'create table newTagsTable (';
    
    OPEN @getid
    FETCH NEXT
    FROM @getid INTO @p_sql_2
    WHILE @@FETCH_STATUS = 0
    begin
        set @p_sql = @p_sql + @p_sql_2 + ' varchar(20),'
        FETCH NEXT FROM @getid INTO @p_sql_2
    end;
    
    set @p_sql = left(@p_sql, len(@p_sql)-1) + ')';
    
    EXEC (@p_sql);
    
end;

然后执行以下过程:

exec test_proc

您可以为此添加参数以使其在其他情况下更可用... 这是第二个选项的演示:

DEMO

相关问题