Sql server 当列名作为另一个tabl的feild值出现时,动态地将列添加到临时表中

Sql server 当列名作为另一个tabl的feild值出现时,动态地将列添加到临时表中,sql-server,pivot,dynamic-sql,Sql Server,Pivot,Dynamic Sql,我有一个物理表,在其中我可以使用select fieldvalue从表中选择字段值。我需要这些结果字段值作为一个可诱惑的列,另一个fieldvalue作为基于fieldvalue的相应列值 例如:从表中选择KeyField、ValueFile 假设键域X,Y,Z ValueFileld对应于X->A 我需要带有X、Y、Z的临时表作为可诱惑的列名,A、B、C作为相应列的行值。我已经使用动态查询完成了相同的操作 接下来的步骤 将字段值插入临时表 在临时表中循环 逐列取1 新临时表的内部循环writ

我有一个物理表,在其中我可以使用select fieldvalue从表中选择字段值。我需要这些结果字段值作为一个可诱惑的列,另一个fieldvalue作为基于fieldvalue的相应列值

例如:从表中选择KeyField、ValueFile

假设键域X,Y,Z ValueFileld对应于X->A


我需要带有X、Y、Z的临时表作为可诱惑的列名,A、B、C作为相应列的行值。

我已经使用动态查询完成了相同的操作

接下来的步骤

  • 将字段值插入临时表
  • 在临时表中循环
  • 逐列取1
  • 新临时表的内部循环write alter table add column语句

    //-------查询片段--------//


样本数据和预期结果将真正帮助我们帮助您。另外,到目前为止,您尝试了什么来解决这个问题?但是,考虑到标签,如果您正在寻找一个动态轴心,那么有很多关于堆栈溢出的示例。你真的需要临时桌吗?如果您只需要数据透视的结果,那么遵循Lamu的链接,否则也可以这样做,只需添加一个步骤将数据透视的结果存储到临时表中
SELECT Name into #ControlTable FROM Tbl_A
WHILE exists (SELECT [Name] FROM #ControlTable)
BEGIN
SELECT TOP 1 @columnname=[Name] FROM #ControlTable
@alterqry="ALTER TABLE Tbl_B Add column '+@columnname+' varchar(50)"
EXECUTE(@alterqry)
DELETE FROM #ControlTable WHERE [Name]=@columnname
END