SQL Server 2008 Unpivot with 给定条件

SQL Server 2008 Unpivot with Given Condition

我真的被这个问题困住了,我认为可以使用 unpivot 解决这个问题,但我真的不知道应该如何构造它。 我有以下 table:

TableName       ColumnName        ColumnValue
----------------------------------------------
Table1          ColumnA            1
Table1          ColumnB            2
Table1          ColumnC            3
Table2          ColumnA            4
Table2          ColumnD            5

我想得到以下结果:

TableName        Column1         Column2        ColumnAValue        ColumnBValue
---------------------------------------------------------------------------------
Table1           ColumnA         ColumnB        1                   2
Table2           ColumnA         ColumnD        4                   5

我得到以下 table:

TableName        Column1        Column2
---------------------------------------
Table1           ColumnA        ColumnB
Table2           ColumnA        ColumnD

如果我理解正确的话...“Given Table”是 KEY

例子

Select G.* 
      ,ColumnAValue = A.ColumnValue
      ,ColumnBValue = B.ColumnValue
 From  GivenTable G
 Left  Join YourTable A on G.TableName=A.TableName and G.Column1=A.ColumnName
 Left  Join YourTable B on G.TableName=B.TableName and G.Column2=B.ColumnName

Returns

TableName   Column1   Column2   ColumnAValue    ColumnBValue
Table1      ColumnA   ColumnB   1               2
Table2      ColumnA   ColumnD   4               5