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

SQL सर्वर 2005 में कॉलम में पंक्तियों को स्थानांतरित करना

आपको एक PIVOT . PIVOT के साथ ऐसा करने के दो तरीके हैं, या तो एक स्टेटिक पिवट जहां आप कॉलम को ट्रांसफॉर्म करने के लिए कोड करते हैं या एक डायनामिक पिवट जो निष्पादन पर कॉलम निर्धारित करता है।

स्थिर धुरी:

SELECT *
FROM
(
    SELECT col1, col2
    FROM yourTable
) x
PIVOT
(
   min(col2)
   for col1 in ([A], [B], [C])
)p

देखें SQL Fiddle with Demo

गतिशील धुरी:

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

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

set @query = 'SELECT ' + @cols + ' from 
             (
                select col1, col2
                from t1
            ) x
            pivot 
            (
                min(col2)
                for col1 in (' + @cols + ')
            ) p '

execute(@query)

देखें SQL Fiddle with Demo

यदि आप PIVOT . का उपयोग नहीं करना चाहते हैं फ़ंक्शन, तो आप CASE . के साथ एक समान प्रकार की क्वेरी कर सकते हैं बयान:

select 
  SUM(CASE WHEN col1 = 'A' THEN col2 END) as A,
  SUM(CASE WHEN col1 = 'B' THEN col2 END) as B,
  SUM(CASE WHEN col1 = 'C' THEN col2 END) as C
FROM t1

देखें SQL Fiddle with Demo



  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 सर्वर 2005 के लिए सर्वर नाम कैसे खोजें

  2. दो अलग-अलग डेटाबेस में दो तालिकाओं के बीच जुड़ने में क्या समस्याएं हैं?

  3. SQL सर्वर डेटाबेस में पहचान कॉलम के साथ सभी तालिकाओं को कैसे खोजें - SQL सर्वर / टी-एसक्यूएल ट्यूटोरियल भाग 45

  4. SQL सर्वर में डेटाबेस में सभी तालिकाओं के लिए कॉलम विवरण जोड़ें कैसे उत्पन्न करें - SQL सर्वर / टी-एसक्यूएल ट्यूटोरियल भाग 49

  5. इसका क्या मतलब है जब Statement.executeUpdate() रिटर्न -1?