Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर - PIVOT - पंक्तियों में दो कॉलम

कुछ अलग तरीके हैं जिनसे आप मनचाहा परिणाम प्राप्त कर सकते हैं। @Sheela K R's के समान उत्तर आप CASE अभिव्यक्ति के साथ एक समग्र फ़ंक्शन का उपयोग कर सकते हैं लेकिन इसे अधिक संक्षिप्त तरीके से लिखा जा सकता है:

select 
  max(case when rowid = 1 then first end) First1,
  max(case when rowid = 1 then last end) Last1,
  max(case when rowid = 2 then first end) First2,
  max(case when rowid = 2 then last end) Last2,
  max(case when rowid = 3 then first end) First3,
  max(case when rowid = 3 then last end) Last3,
  max(case when rowid = 4 then first end) First4,
  max(case when rowid = 4 then last end) Last4,
  max(case when rowid = 5 then first end) First5,
  max(case when rowid = 5 then last end) Last5
from yourtable;

देखें SQL Fiddle with Demo

इसे PIVOT फ़ंक्शन का उपयोग करके भी लिखा जा सकता है, हालाँकि चूंकि आप कई कॉलम पिवट करना चाहते हैं, तो आप पहले अपने First को अनपिवट करते हुए देखना चाहेंगे। और Last स्तंभ।

अनपिवट प्रक्रिया आपके कई कॉलम को डेटा की कई पंक्तियों में बदल देगी। आपने यह निर्दिष्ट नहीं किया कि आप SQL सर्वर के किस संस्करण का उपयोग कर रहे हैं, लेकिन आप SELECT . का उपयोग कर सकते हैं UNION ALL . के साथ CROSS APPLY के साथ या यहां तक ​​कि UNPIVOT पहला रूपांतरण करने के लिए कार्य:

select col = col + cast(rowid as varchar(10)), value
from yourtable
cross apply 
(
  select 'First', First union all
  select 'Last', Last
) c (col, value)

देखें SQL Fiddle with Demo . यह आपके डेटा को प्रारूप में परिवर्तित करता है:

|    COL |       VALUE |
|--------|-------------|
| First1 | RandomName1 |
|  Last1 | RandomLast1 |
| First2 | RandomName2 |
|  Last2 | RandomLast2 |

एक बार जब डेटा कई पंक्तियों में हो, तो आप आसानी से PIVOT फ़ंक्शन लागू कर सकते हैं:

select First1, Last1, 
  First2, Last2,
  First3, Last3, 
  First4, Last4, 
  First5, Last5
from
(
  select col = col + cast(rowid as varchar(10)), value
  from yourtable
  cross apply 
  (
    select 'First', First union all
    select 'Last', Last
  ) c (col, value)
) d
pivot
(
  max(value)
  for col in (First1, Last1, First2, Last2,
              First3, Last3, First4, Last4, First5, Last5)
) piv;

देखें SQL Fiddle with Demo

दोनों इसका परिणाम देते हैं:

|      FIRST1 |       LAST1 |      FIRST2 |       LAST2 |      FIRST3 |       LAST3 |      FIRST4 |       LAST4 |      FIRST5 |       LAST5 |
|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|-------------|
| RandomName1 | RandomLast1 | RandomName2 | RandomLast2 | RandomName3 | RandomLast3 | RandomName4 | RandomLast4 | RandomName5 | RandomLast5 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर से पासवर्ड कैसे डिक्रिप्ट करें?

  2. एसक्यूएल:मूल्यों की आईडी कैसे प्राप्त करें जिन्हें मैंने अभी सम्मिलित किया है?

  3. डेटाबेस, एसएमओ, सी # के लिए विफल बनाएँ

  4. SQL सर्वर 2008 स्प्लिट, सॉर्ट और मर्ज वैल्यू

  5. मैं एक चर के साथ चुनिंदा क्वेरी में SQL सर्वर तालिका नाम का उपयोग कैसे करूं?