Loops 具有动态列名的SQL Insert

Loops 具有动态列名的SQL Insert,loops,sql-server-2014,sql-insert,temp-tables,Loops,Sql Server 2014,Sql Insert,Temp Tables,我有一个临时表,它有所有列的名称,现在有4个,我正在通过临时表循环并插入到另一个表中,现在的问题是,我要插入的列名取决于它从循环中得到的内容: 代码如下: Declare @OutputTable table ( RowID int IDENTITY(1, 1), ClientID int, Cli

我有一个临时表,它有所有列的名称,现在有4个,我正在通过临时表循环并插入到另一个表中,现在的问题是,我要插入的列名取决于它从循环中得到的内容:

代码如下:

Declare @OutputTable table 
                     (
                         RowID int IDENTITY(1, 1),  
                         ClientID int, 
                         ClientName VarChar(100), 
                         ScoreModule1 VarChar(100), 
                         ScoreModule2 VarChar(100), 
                         ScoreModule3 VarChar(100), 
                         ScoreModule4 VarChar(100)
                     )

Declare @TempModuleNumber table 
                          ( 
                               RowIDNumber int IDENTITY(1, 1), 
                               ModuleNumber varchar (300)
                          )

INSERT INTO @TempModuleNumber(ModuleNumber) 
VALUES ('ScoreModule1'), ('ScoreModule2'),
       ('ScoreModule3'), ('ScoreModule4')

Declare @ModuleRowCountNumber int 
Declare @ModuleCounterNumber int 
Declare @ModuleNumber varchar(300) 

Select @ModuleRowCount = COUNT(@ModuleNumber) 
from @TempModuleNumber

set @ModuleCounterNumber = 1 

while @ModuleCounterNumber <= @ModuleRowCount
begin
    Select @ModuleNumber = ModuleNumber 
    from @TempModuleNumber 
    where RowIDNumber = @ModuleCounterNumber

    Insert into @OutputTable (ClientID, ClientName, @ModuleNumber) --This is where the problem is the @ModuleNumber is. I get a "syntax error". Is there another way of doing this to it depends on what it gets from the Loop?

    Set @ModuleCounterNumber = @ModuleCounterNumber + 1
END

我只对必要的部分进行了更改:

while @ModuleCounterNumber <= @ModuleRowCount
begin
    Select @ModuleNumber = ModuleNumber 
    from @TempModuleNumber 
    where RowIDNumber = @ModuleCounterNumber

    DECLARE @SQL VARCHAR(MAX)
    SET @SQL = 
    '
    Insert into @OutputTable (ClientID, ClientName, ' + @ModuleNumber + ')
    SELECT A,B,C  //<----------- THIS IS THE MISSING PART I WAS TALKING ABOUT
    '
    EXEC(@SQL)

    Set @ModuleCounterNumber = @ModuleCounterNumber + 1
END

使用动态SQL,插入后选择在哪里?这不起作用,我尝试过了。有没有代码可以显示我尝试过使用SET@SQLQuery='SELECT*从SEC_用户的插入到TBL1中Execute@SQLQuery没有工作说一些奇怪的错误无法执行我将发布@Maxi