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

Sql Server 2008 पंक्ति से स्तंभ तक

कुछ तरीके हैं जिनसे आप डेटा को पंक्तियों से कॉलम में बदल सकते हैं।

चूंकि आप SQL Server 2008 का उपयोग कर रहे हैं, तो आप PIVOT फ़ंक्शन का उपयोग कर सकते हैं।

मैं row_number() . का उपयोग करने का सुझाव दूंगा डेटा को पिवट करने में सहायता करने के लिए कार्य करता है। यदि आपके पास ज्ञात संख्या में मान हैं, तो आप क्वेरी को हार्ड-कोड कर सकते हैं:

select user, category1, category2, category3, category4
from
(
  select [user], category,
    'Category'+cast(row_number() over(partition by [user] 
                                      order by [user]) as varchar(3)) rn
  from yt
) d
pivot
(
  max(category)
  for rn in (category1, category2, category3, category4)
) piv;

देखें SQL Fiddle with Demo

आपकी स्थिति के लिए आपने कहा था कि आपके पास अज्ञात संख्या में मान होंगे जिन्हें कॉलम होने की आवश्यकता है। उस स्थिति में, आप निष्पादित करने के लिए क्वेरी स्ट्रिंग उत्पन्न करने के लिए गतिशील SQL का उपयोग करना चाहेंगे:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME('Category'+cast(row_number() over(partition by [user] 
                                                                      order by [user]) as varchar(3))) 
                    from yt
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT [user],' + @cols + ' 
              from
              (
                select [user], category,
                  ''Category''+cast(row_number() over(partition by [user] 
                                                    order by [user]) as varchar(3)) rn
                from yt
              ) d
              pivot 
              (
                  max(category)
                  for rn in (' + @cols + ')
              ) p '

execute(@query)

देखें SQL Fiddle with Demo . दोनों एक परिणाम देते हैं:

|  USER |  CATEGORY1 | CATEGORY2 | CATEGORY3 | CATEGORY4 |
----------------------------------------------------------
| Bruce |     Laptop |      Beer |    (null) |    (null) |
| Chuck | Cell Phone |    (null) |    (null) |    (null) |
|  Jack |      Shoes |       Tie |     Glass |    (null) |
| Peggy |       Shoe |     Skirt |       Bat |       Cat |


  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 क्वेरी - क्वेरी में दिनांक स्वरूप को DD/MM/YYYY में बदलें

  2. किसी विशिष्ट मान के साथ एक varbinary फ़ील्ड को कैसे अपडेट करें?

  3. SQL:प्रत्येक कॉलम के रिकॉर्ड के लिए ऑडिट लौटाएं

  4. टाइमस्टैम्प कॉलम में 30 मिनट से अधिक अंतराल का पता लगाएं

  5. SQL सर्वर के लिए डेटा जनरेटर?