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

एक सबक्वायरी से एक सीमित क्षेत्र में एकाधिक पंक्तियों में शामिल होने के लिए SQL सर्वर फ़ंक्शन कैसे बनाएं?

यदि आप SQL Server 2005 का उपयोग कर रहे हैं, तो आप FOR XML PATH कमांड का उपयोग कर सकते हैं।

SELECT [VehicleID]
     , [Name]
     , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) 
         FROM [Location] 
         WHERE (VehicleID = Vehicle.VehicleID) 
         FOR XML PATH ('')), 1, 2, '')) AS Locations
FROM [Vehicle]

यह कर्सर का उपयोग करने की तुलना में बहुत आसान है, और यह काफी अच्छा काम करता प्रतीत होता है।

अपडेट करें

SQL सर्वर के नए संस्करणों के साथ अभी भी इस पद्धति का उपयोग करने वाले किसी भी व्यक्ति के लिए, इसे करने का एक और तरीका है जो STRING_AGG का उपयोग करके थोड़ा आसान और अधिक प्रदर्शनकारी है। विधि जो SQL सर्वर 2017 के बाद से उपलब्ध है।

SELECT  [VehicleID]
       ,[Name]
       ,(SELECT STRING_AGG([City], ', ')
         FROM [Location]
         WHERE VehicleID = V.VehicleID) AS Locations
FROM   [Vehicle] V

यह एक अलग विभाजक को दूसरे पैरामीटर के रूप में निर्दिष्ट करने की भी अनुमति देता है, जो पूर्व विधि पर थोड़ा अधिक लचीलापन प्रदान करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pyodbc - बहुत धीमी बल्क इंसर्ट गति

  2. सी # में पैरामीटर के साथ संग्रहीत प्रक्रिया को कॉल करें

  3. SQL सर्वर प्रदर्शन टॉप CPU क्वेरी -1

  4. SQL सर्वर 2016 अस्थायी तालिका क्वेरी योजना व्यवहार

  5. SQL सर्वर तालिका को भिन्न फ़ाइल समूह में ले जाना