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

मैं एसक्यूएल सर्वर 2005 में पंक्तियों को कॉलम में कैसे बदलूं?

समान प्रश्न हैं यहां ,यहां स्टैकओवरफ्लो में उत्तर दिया गया।

आपको ऑपरेटर का उपयोग करने की आवश्यकता है PIVOT इसे प्राप्त करने के लिए आपकी क्वेरी में। यहां उदाहरण और स्पष्टीकरण दिया गया है कि आप इसे कैसे कर सकते हैं। उदाहरण यह स्रोत।

---I assumed your tablename as TESTTABLE---
DECLARE @cols NVARCHAR(2000)
DECLARE @query NVARCHAR(4000)

SELECT  @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT
                                '],[' + t.Name
                        FROM    TESTTABLE AS t
                        ORDER BY '],[' + t.Name
                        FOR XML PATH('')
                      ), 1, 2, '') + ']'

SET @query = N'SELECT '+ @cols +' FROM
(SELECT t1.Name , t1.Count FROM TESTTABLE AS t1) p
PIVOT (MAX([Count]) FOR Name IN ( '+ @cols +' ))
AS pvt;'

EXECUTE(@query)

स्पष्टीकरण

1.क्वेरी का पहला भाग

SELECT  @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT
                        '],[' + t.Name
                FROM TESTTABLE AS t
                ORDER BY '],[' + t.Name
                FOR XML PATH('')
              ), 1, 2, '') + ']'

अनुसरण के रूप में आपको एक ही पंक्ति में आपके नाम कॉलम मानों का एक अच्छा चपटा परिणाम देता है

[Cheryl],[Drew],[Karen],[Kath],[Kirk],[Matt]  

आप STUFF और XML PATH के बारे में अधिक जान सकते हैं यहां और यहां .

2.SELECT + @cols + FROM अंतिम परिणाम सेट के लिए कॉलम नामों के रूप में सभी पंक्तियों का चयन करेगा (निजी - चरण 3)

यानी

Select [Chery],[Drew],[Morgan],[Kath],[Kirk],[Matt] 

3. यह क्वेरी क्रॉस-टैब परिणाम बनाने के लिए आवश्यक डेटा की सभी पंक्तियों को खींचती है। क्वेरी के बाद (पी) परिणामों की एक अस्थायी तालिका बना रहा है जिसका उपयोग चरण 1 के लिए क्वेरी को संतुष्ट करने के लिए किया जा सकता है।

(SELECT t1.Name, t1.Count FROM  TESTTABLE AS t1) p

4. धुरी अभिव्यक्ति

PIVOT (MAX (Count) FOR Name IN ( @cols) AS pvt

वास्तविक सारांश करता है और परिणामों को एक अस्थायी तालिका में रखता है जिसे pvt कहा जाता है

Chery | Drew | Morgon | Kath | Kirk | Matt  
-------------------------------------------  
257     1500     13      500    200    76


  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 तालिका में SQL DELETE कथन का उपयोग करने के सर्वोत्तम तरीके

  3. क्या सीटीई का उपयोग करके कॉलम मानों को एक स्ट्रिंग में जोड़ना संभव है?

  4. SQL सर्वर को समझना ALTER TABLE ADD COLUMN Statement

  5. मैं एमएस-एसक्यूएल सर्वर में एक अलियास्ड कॉलम पर ग्रुप बाय कैसे कर सकता हूं?