从一个表格中选择数据&然后根据SQL Server中的另一个表重命名列

时间:2015-05-11 11:40:24

标签: sql sql-server

我有两张桌子。 TableOne,其中包含两列(name& value)。 TableTwo可以包含N no. of columnsTableOne中的行数将等于TableTwo中的行数。

有关详细信息,请参阅下图。

enter image description here

我想要的是什么:

当我在TableTwo上运行选择查询时,结果集应根据value的{​​{1}}列选择列名称。我们需要将TableOne的列名与TableTwo中可用的行匹配,然后执行转换。

所以输出应该如下所示:

TableOne

1 个答案:

答案 0 :(得分:0)

您可以使用动态sql根据第一个表中的值生成要执行的查询。这是一个例子:

Declare @dynamicSQL nvarchar(200)

SET @dynamicSQL ='SELECT'+(SELECT stuff((select','+ name +'AS'+ value      来自表1      for xml path('')),1,1,''))+'FROM Table2'

EXECUTE sp_executesql @dynamicSQL

SQL小提琴:http://sqlfiddle.com/#!6/768f9/10