转置SQL查询结果

时间:2018-06-13 18:21:26

标签: sql sql-server tsql

我有一个查询生成一个如下所示的表:

+----------------+-----------+------------+----------+
| CustomerNumber | FirstName | MiddleName | LastName |
+----------------+-----------+------------+----------+
|         123456 | Test      | Test1      | Test2    |
+----------------+-----------+------------+----------+

我需要的是桌子看起来像这样:

+----------------+--------+
| CustomerNumber | 123456 |
+----------------+--------+
| FirstName      | Test   |
| MiddleName     | Test1  |
| LastName       | Test2  |
+----------------+--------+

这是我当前的SQL查询:

SELECT 
        CustomerNumber,
        FirstName,
        MiddleName,
        LastName
FROM    Customers
WHERE   CustermerNumber = 123456

有没有办法完成这个?我一直在寻找通过unpivot转置它但却无法理解的方式。

2 个答案:

答案 0 :(得分:2)

您可以使用apply

select tt.*
from table t cross apply ( 
         values ('CustomerNumber', CustomerNumber), ('FirstName', FirstName),
                 ('MiddleName', MiddleName), ('LastName', LastName)
       ) tt (name, v); 

答案 1 :(得分:1)

使用动态TSQL透视,您还可以管理多行输入:

prop

一行

的输入和输出示例

enter image description here

三行的示例输入和输出:

enter image description here