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

quảĐổi tên cột khi sử dụng 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 

Bây giờ CÁCH tôi có thể thay đổi tên cột Tên, Tuổi, Mức lương tương ứng sau khi EmployeeID?

Trả lời

13

Sử dụng AS để cung cấp bí danh cột.

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 Tôi biết các giải pháp dễ dàng hơn đã bị ràng buộc để tồn tại không phải là nó sẽ * * dễ dàng . –

+1

@Martin Smith Tôi có thể sử dụng nó với trục động không. Tôi sẽ sử dụng trục động. :) http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with-dynamic-columns-in-sql-server-2005-2008.aspx – Rauf

+0

@Rauf - Có. Bạn chỉ cần đảm bảo rằng chuỗi SQL động được tạo ra ở dạng này. –

8

giải pháp Có lẽ dễ dàng hơn tồn tại nhưng đặt kết quả tuyên bố PIVOT vào một subquery cho phép bạn bí danh các cột trong các lựa chọn bên ngoài.

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

Mẹo tuyệt vời, cảm ơn! – craig