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

SQL सर्वर में एकाधिक पंक्तियों से टेक्स्ट को एक टेक्स्ट स्ट्रिंग में कैसे संयोजित करें

यदि आप SQL Server 2017 या Azure पर हैं, तो Mathieu Renda उत्तर देखें।

जब मैं एक-से-कई संबंधों के साथ दो तालिकाओं में शामिल होने का प्रयास कर रहा था तो मुझे एक समान समस्या थी। SQL 2005 में मैंने पाया कि XML PATH विधि पंक्तियों के संयोजन को बहुत आसानी से संभाल सकती है।

अगर STUDENTS . नाम की कोई टेबल है

SubjectID       StudentName
----------      -------------
1               Mary
1               John
1               Sam
2               Alaina
2               Edward

परिणाम मुझे अपेक्षित था:

SubjectID       StudentName
----------      -------------
1               Mary, John, Sam
2               Alaina, Edward

मैंने निम्नलिखित T-SQL का उपयोग किया है :

SELECT Main.SubjectID,
       LEFT(Main.Students,Len(Main.Students)-1) As "Students"
FROM
    (
        SELECT DISTINCT ST2.SubjectID, 
            (
                SELECT ST1.StudentName + ',' AS [text()]
                FROM dbo.Students ST1
                WHERE ST1.SubjectID = ST2.SubjectID
                ORDER BY ST1.SubjectID
                FOR XML PATH ('')
            ) [Students]
        FROM dbo.Students ST2
    ) [Main]

यदि आप शुरुआत में अल्पविरामों को संक्षिप्त कर सकते हैं और substring का उपयोग कर सकते हैं, तो आप वही काम अधिक कॉम्पैक्ट तरीके से कर सकते हैं पहले वाले को छोड़ने के लिए ताकि आपको उप-क्वेरी करने की आवश्यकता न पड़े:

SELECT DISTINCT ST2.SubjectID, 
    SUBSTRING(
        (
            SELECT ','+ST1.StudentName  AS [text()]
            FROM dbo.Students ST1
            WHERE ST1.SubjectID = ST2.SubjectID
            ORDER BY ST1.SubjectID
            FOR XML PATH ('')
        ), 2, 1000) [Students]
FROM dbo.Students ST2


  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. दिनांक सीमा ओवरलैपिंग चेक बाधा

  4. SQL सर्वर में किसी मौजूदा तालिका में प्राथमिक कुंजी कैसे जोड़ें (T-SQL उदाहरण)

  5. टी-एसक्यूएल संग्रहीत प्रक्रिया जो एकाधिक आईडी मान स्वीकार करती है