将一些数据行转换为SQL Server 2008中的下一列

时间:2014-11-03 22:56:27

标签: sql-server sql-server-2008 transpose

我需要在SQL Server 2008

中将少数行转换为其他列

源表数据

Test    Cmdid   Test Name   Test Value
TC1     1        TN1         A
TC1     2        TN1         B
TC1     3        TN1         C
TC1     4        TN1         D

TC1     1        TN2         X
TC1     2        TN2         Y
TC1     3        TN2         Z
TC1     4        TN2         M

此数据应转换如下

Test    Cmdid   TN1Values   TN2Values
TC1      1       A           X
TC1      2       B           Y
TC1      3       C           Z
TC1      4       D           M

如何转置数据?

1 个答案:

答案 0 :(得分:1)

除非我在这里遗漏了一些内容,否则这看起来像是一个普通的数据透视查询:

SELECT [Test], [Cmdid], [TN1] AS TN1Values, [TN2] AS TN2Values
FROM Table1
PIVOT (
    MAX([Test Value]) FOR [Test Name] IN ([TN1],[TN2])
) pvt

Sample SQL Fiddle