Sql 将行透视为列

Sql 将行透视为列,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,因此,我有一个表,显示服务器应用程序的版本。 检查每个服务器、每个应用程序的每个版本。 我正在使用MicrosoftSQLServerManagementStudio 基本上这就是我的桌子现在的样子: | Application | Server | Version | --------------------------------------- | Application_1 | Server_1 | 420 | | Application_1 |

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

|   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    |
我搜索了以前关于pivot的主题,查看了论坛和教程,但仍然无法找到如何使用它。 任何帮助都将不胜感激,谢谢

这样就可以了

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

简单的解决方案Thanxy您的解决方案正好适合我所需要的问题,而且您的方式使我更容易理解!非常感谢@JonWay