Sql server 2008 使用PIVOT SQL Server 2008时更改列名

Sql server 2008 使用PIVOT SQL Server 2008时更改列名,sql-server-2008,pivot,Sql Server 2008,Pivot,结果 SELECT * FROM EmployeeAttributes PIVOT ( MAX(VALUE) FOR AttributeID IN ([DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E],[BE8149E2-0806-4D59-8482-58223C2F1735],[23B2C459-3D30-41CA-92AE-7F581F2535D4]) ) P 现在,我如何在EmployeeID之后将列名分别更改为name、

结果

    SELECT * FROM EmployeeAttributes
PIVOT (
     MAX(VALUE)
     FOR AttributeID IN ([DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E],[BE8149E2-0806-4D59-8482-58223C2F1735],[23B2C459-3D30-41CA-92AE-7F581F2535D4])
      ) P

现在,我如何在EmployeeID之后将列名分别更改为name、Age、Salary?

使用
AS
提供列别名

    EmployeeID                           DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E               BE8149E2-0806-4D59-8482-58223C2F1735               23B2C459-3D30-41CA-92AE-7F581F2535D4
------------------------------------ -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
329999EA-6288-4E7D-87E8-12FF865AB301 Rauf                                               23                                                 10
34E2B762-F065-42BB-B4D8-2252102F1C20 Amal                                               NULL 

                                          5

可能存在更简单的解决方案,但将PIVOT语句结果放入子查询中可以使您在外部select中对列进行别名

SELECT EmployeeID,
       [DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E] AS Name,
       [BE8149E2-0806-4D59-8482-58223C2F1735] AS Age,
       [23B2C459-3D30-41CA-92AE-7F581F2535D4] AS Salary
FROM   EmployeeAttributes PIVOT ( MAX(VALUE) FOR AttributeID IN (
       [DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E],
       [BE8149E2-0806-4D59-8482-58223C2F1735],
       [23B2C459-3D30-41CA-92AE-7F581F2535D4]) ) P  

+1我知道更容易的解决方案一定会存在,但并不是说它会那么容易。@Martin Smith我也可以将它与dynamic pivot一起使用。我将使用动态轴。:)@劳夫-是的。您只需要确保生成的动态SQL字符串是这种形式。
SELECT  EmployeeID = EmployeeID
        , Name = [DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E]
        , Age = [BE8149E2-0806-4D59-8482-58223C2F1735]
        , Salary = [23B2C459-3D30-41CA-92AE-7F581F2535D4]
FROM    (
          SELECT  * 
          FROM    EmployeeAttributes
          PIVOT   (MAX(VALUE) FOR AttributeID IN (
                  [DD14C4C2-FC9E-4A2E-9B96-C6A20A169B2E]
                  , [BE8149E2-0806-4D59-8482-58223C2F1735]
                  , [23B2C459-3D30-41CA-92AE-7F581F2535D4])
          ) P
        ) P