将行透视成列

时间:2019-01-12 08:55:47

标签: sql sql-server tsql pivot

因此,我有一个表,用于显示服务器的应用程序版本。 检查每个服务器,每个应用程序的每个版本。 我正在使用Microsoft SQL Server Management Studio 基本上这就是我的桌子现在的样子:

|   Application   |   Server    | Version |
---------------------------------------
|  Application_1  |  Server_1   |   420   | 
|  Application_1  |  Server_2   |   410   |
|  Application_1  |  Server_3   |   420   | 
|  Application_2  |  Server_1   |   18    |
|  Application_2  |  Server_2   |   19    |
|  Application_2  |  Server_3   |   18    |

,我想将其透视为每个应用程序。像这样:

|  Application  | Server_1 | Server_2 | Server_3 |   
---------------------------------------
| Application_1 |    420   |    410   |    420   |
| Application_2 |    18    |    19    |    18    |

我搜索了以前有关数据透视的主题,研究了论坛和教程,但是仍然找不到如何使用它。 任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

这会做到

DECLARE @TBL TABLE ([Application] VARCHAR(50),  [Server] VARCHAR(50) ,[Version] INT)
INSERT INTO @TBL VALUES
('Application_1','Server_1',420),
('Application_1','Server_2',410),
('Application_1','Server_3',420),
('Application_2','Server_1',18),
('Application_2','Server_2',19),
('Application_2','Server_3',18);

SELECT * FROM @TBL
PIVOT
(
SUM([Version]) FOR [Server] IN ([Server_1],[Server_2],[Server_3])
) PV