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

एक कॉलम के परिणामों को एक पंक्ति में परिवर्तित करना

आप कोशिश कर रहे हैं PIVOT आँकड़े। SQL सर्वर में एक PIVOT होता है फ़ंक्शन जो आपके लिए यह कर सकता है। PIVOT करने के लिए आपको यह तय करने की आवश्यकता है कि किस समग्र कार्य का उपयोग करना है। मेरे नमूने में, मैंने MAX() . का उपयोग किया है लेकिन आप SUM() . का उपयोग कर सकते हैं , आदि

यदि आपके पास पिवट फ़ंक्शन नहीं है तो आप CASE . के साथ एक समग्र फ़ंक्शन का उपयोग कर सकते हैं ऐसा करने के लिए बयान।

एग्रीगेट/केस संस्करण: इस संस्करण के लिए आवश्यक है कि आप सभी नामों को कॉलम में हार्ड-कोड करें।

select 
  max(case when name = 'Engineering' then rating end) Engineering,
  max(case when name = 'Financials' then rating end) Financials,
  max(case when name = 'Scope' then rating end) Scope,
  max(case when name = 'Schedule' then rating end) Schedule,
  max(case when name = 'Risks' then rating end) Risks,
  max(case when name = 'People' then rating end) People
from yourtable

देखें SQL Fiddle with Demo

स्थिर PIVOT संस्करण: आप इस क्वेरी में नामों के मानों को हार्ड कोड करेंगे

select *
from
(
  select name, rating
  from yourtable
) src
pivot
(
  max(rating)
  for name in ([Engineering], [Financials], [Scope],
               [Schedule], [Risks], [People])
) piv

देखें SQL Fiddle with Demo

यदि आपके पास स्तंभों की ज्ञात संख्या है, लेकिन यदि आपका name . है तो उपरोक्त संस्करण बहुत अच्छा काम करते हैं मान अज्ञात हैं, तो आप डायनेमिक sql का उपयोग PIVOT . में कर सकते हैं डेटा।

गतिशील PIVOT संस्करण:

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Name) 
                    from yourtable
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ' + @cols + ' from 
             (
                select name, rating
                from yourtable
            ) x
            pivot 
            (
                max(rating)
                for name in (' + @cols + ')
            ) p '

execute(@query)

देखें SQL Fiddle with Demo

तीनों संस्करण समान परिणाम देंगे:

| ENGINEERING | FINANCIALS | SCOPE | SCHEDULE | RISKS | PEOPLE |
----------------------------------------------------------------
|           1 |          3 |     1 |        2 |     3 |      3 |



  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. SQL LIKE क्लॉज में SqlParameter का उपयोग काम नहीं कर रहा है

  3. SQL Server Cursor Types - LOCAL और GLOBAL Cursor में क्या अंतर है | SQL सर्वर ट्यूटोरियल / TSQL ट्यूटोरियल

  4. SQL सर्वर संग्रहीत प्रो में वैकल्पिक पैरामीटर?

  5. SQL सर्वर डेटाबेस स्नैपशॉट -4