2011-11-14 22 views
9
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 

ResultadoCambiar nombre de la columna durante el uso de PIVOT SQL Server 2008

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 

Ahora ¿Cómo puedo cambiar el nombre de la columna de nombre, edad, salario, respectivamente, después de la de empleado?

Respuesta

13

Use AS para dar un alias de columna. Existen

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 
+0

+1 Sabía que las soluciones más sencillas estaban destinadas a existir simplemente porque no sería * que * fácil . –

+1

@Martin Smith ¿Puedo usarlo también con un pivote dinámico? Voy a usar un pivote dinámico. :) http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with-dynamic-columns-in-sql-server-2005-2008.aspx – Rauf

+0

@Rauf - Sí. Solo necesita asegurarse de que la cadena SQL dinámica generada esté en esta forma. –

8

soluciones quizás más fácil de colocar, pero el resultado comunicado PIVOT en una sub consulta le permite otorgar a las columnas en el selecto exterior.

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     
+0

Awesome tip, gracias! – craig

Cuestiones relacionadas