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
我真的被这个问题困住了,我认为可以使用 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