2011-11-14 2 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 

WynikZmień nazwę kolumna podczas korzystania 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 

teraz Jak mogę zmienić nazwę kolumny aby nazwisko, wiek, wynagrodzenia odpowiednio po IDpracownika?

Odpowiedz

13

Użyj AS, aby podać alias kolumny.

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 Wiedziałem, że łatwiejsze rozwiązania musiały istnieć, po prostu nie, że to będzie * to * łatwe . –

+1

@Martin Smith Czy mogę go używać z dynamicznym pivotem. Zamierzam użyć dynamicznego obrotu. :) http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with-dynamic-columns-in-sql-server-2005-2008.aspx – Rauf

+0

@Rauf - Tak. Trzeba tylko upewnić się, że dynamiczny ciąg SQL został wygenerowany w tym formularzu. –

8

Być może łatwiejsze rozwiązania istnieją, ale umieszczenie wyniku instrukcji PIVOT w podzapytaniu pozwala na alias kolumn w zewnętrznym wyborze.

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

Niesamowita wskazówka, dzięki! – craig

Powiązane problemy