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

परिणामबदलें स्तंभ नाम धुरी एसक्यूएल सर्वर 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 

अब कैसे मैं क्रमशः EmployeeID के बाद नाम, आयु, वेतन के लिए स्तंभ नाम बदल सकते हैं?

उत्तर

13

कॉलम उपनाम देने के लिए AS का उपयोग करें।

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 मुझे पता था कि आसान समाधान मौजूद हैं, यह नहीं कि यह * आसान * होगा। –

+1

@ मार्टिन स्मिथ क्या मैं इसे गतिशील पिवट के साथ भी उपयोग कर सकता हूं। मैं गतिशील पिवट का उपयोग करने जा रहा हूँ। :) http://www.sqlprof.com/blogs/sqldev/archive/2008/04/12/pivots-with- गतिशील-columns-in-sql-server-2005-2008.aspx – Rauf

+0

@ राउफ - हां। आपको बस यह सुनिश्चित करने की आवश्यकता होगी कि उत्पन्न गतिशील SQL स्ट्रिंग इस फ़ॉर्म में थी। –

8

शायद आसान समाधान मौजूद हैं, लेकिन एक सबक्वेरी में धुरी बयान परिणाम रखकर आप बाहरी चयन में स्तंभों अन्य नाम पर अनुमति देता है।

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

बहुत बढ़िया टिप, धन्यवाद! – craig

संबंधित मुद्दे