如何将列转换为sql server中的行

Ari*_*ian 6 sql sql-server unpivot sql-server-2008

请考虑此表:

ID         Page          Line           C01          C02          C03        
---------------------------------------------------------------------
1          122            11             1            0            1
1          123            11             1            1            1
1          124            12             0            0            0
1          125            16             1            0            1
1          127            11             0            1            0
Run Code Online (Sandbox Code Playgroud)

我想将此表转换为此表:

ID         Page          Line           City         Value
-----------------------------------------------------------
1          122            11            C01            1           
1          122            11            C02            0  
1          122            11            C03            1  
1          123            11            C01            1  
1          123            11            C02            1  
1          123            11            C03            1  
...
Run Code Online (Sandbox Code Playgroud)

我怎么能以适当的方式做到这一点?

Ben*_*thy 9

使用UNPIVOT.尝试类似的东西:

SELECT ID, Page, Line, City, Value
FROM SourceTable
UNPIVOT
   (Value FOR City IN 
      (C01, C02, C03)
)AS unpvt;
Run Code Online (Sandbox Code Playgroud)

其中'SourceTable'是您的源表名称.(注意:我现在无法测试,所以它可能不完全正确.)

详细信息请访问:http://msdn.microsoft.com/en-us/library/ms177410(v = sql.105).aspx