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

एक पंक्ति को कॉलम में बदलें

पिवट टेबल देखें;

देखें http://msdn.microsoft.com/en-us/library/ ms177410.aspx

StatusTypeNames की सीमित संख्या के लिए एक साधारण क्वेरी कुछ इस तरह होगी;

SELECT * FROM 
(SELECT MonthName, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt 
PIVOT ( MAX(StatusCount) FOR attributeCol in ([ToBeScheduled],[Complete])) as pvt
ORDER BY MonthName

मैक्स के उपयोग पर ध्यान दें। यदि संभावना है कि आपके पास समान माहनाम और स्थिति टाइपनाम संयोजन के साथ कई पंक्तियाँ होंगी, तो आप SUM का उपयोग करना चाह सकते हैं।

मधिविनन के सुझाव के अनुसार गतिशील स्तंभों का उपयोग करने के लिए, आप यह उदाहरण। नीचे तक स्क्रॉल करें।

मैंने इसे आपके उदाहरण के साथ काम करने की कोशिश की, लेकिन क्योंकि मेरे पास कुछ समस्याएं थीं, शायद इस तथ्य के कारण कि मेरे पास टेबल नहीं थे। हालांकि, आप जो चाहते हैं वह निम्न जैसा है।

DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT  @listCol = SELECT STUFF (( SELECT DISTINCT '],[' + 
                    StatusTypeName FROM @ResultsTable ORDER BY '],[' + 
                    StatusTypeName FOR XML PATH ('')), 1, 2, '') + ']'


SET @query =
'SELECT * FROM
      (SELECT MonthNameCol, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ('[email protected]+')) AS pvt ORDER BY MonthNameCol'

EXECUTE (@query)

यह बिल्कुल सही नहीं है, लेकिन यह एक शुरुआती बिंदु है।

शुभकामनाएँ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्सर का उपयोग किये बिना टीएसक्यूएल में टेबल वैरिएबल के माध्यम से लूप करने का कोई तरीका है?

  2. अल्फ़ान्यूमेरिक सॉर्ट

  3. कॉलम के रूप में ROWS प्राप्त करें (SQL सर्वर डायनेमिक PIVOT क्वेरी)

  4. लापता अनुक्रम संख्या खोजने के लिए SQL क्वेरी

  5. SQL तालिका में प्राथमिक कुंजी कॉलम जोड़ें