IF OBJECT_ID('master..test') is not null Drop table test
CREATE TABLE test (ID INTEGER, NAME VARCHAR (50), VALUE INTEGER);
INSERT INTO test VALUES (1, 'A', 4);
INSERT INTO test VALUES (1, 'A', 5);
INSERT INTO test VALUES (1, 'B', 8);
INSERT INTO test VALUES (2, 'C', 9);
select distinct NAME , LIST = Replace(Replace(Stuff((select ',', +Value from test where name = _a.name for xml path('')), 1,1,''),'<Value>', ''),'</Value>','') from test _a order by 1 desc
मेरे तालिका नाम परीक्षण है, और concatination के लिए मैं एक्सएमएल पथ के लिए उपयोग करते हैं ('') वाक्य - विन्यास। सामग्री फ़ंक्शन एक स्ट्रिंग को किसी अन्य स्ट्रिंग में सम्मिलित करता है। यह प्रारंभ स्थिति में पहली स्ट्रिंग में वर्णों की एक निर्दिष्ट लंबाई हटा देता है और फिर दूसरी स्ट्रिंग को पहली स्ट्रिंग प्रारंभ स्थिति में डालें।
STUFF कार्यों इस तरह दिखता है: STUFF (character_expression, शुरू, लंबाई, character_expression)
character_expression चरित्र डेटा की एक अभिव्यक्ति है। character_expression वर्ण या बाइनरी डेटा का निरंतर, चर या स्तंभ हो सकता है।
प्रारंभ एक पूर्णांक मान है जो हटाने और सम्मिलन शुरू करने के लिए स्थान निर्दिष्ट करता है। यदि प्रारंभ या लंबाई ऋणात्मक है, एक शून्य स्ट्रिंग वापस कर दी गई है। यदि प्रारंभ पहली वर्ण_एक्सप्रेस से अधिक लंबा है, तो एक शून्य स्ट्रिंग वापस कर दी जाती है। प्रारंभ बिगिन प्रकार का हो सकता है।
लंबाई एक पूर्णांक है जो हटाने के लिए वर्णों की संख्या निर्दिष्ट करता है। यदि लंबाई पहले वर्ण_एक्सप्रेस से अधिक लंबी है, अंतिम वर्ण_एक्सप्रेस में अंतिम वर्ण तक हटाना होता है। लंबाई बिगिन प्रकार का हो सकता है।
यह बिस्वा ने जो नहीं पूछा वह नहीं देता है। – eisberg
धन्यवाद, मैं यही हूं कि मैं @biswa – Biswa
के लिए पूछ रहा हूं, मुझे लगता है कि लोगों को चेतावनी देना महत्वपूर्ण है कि केवल एक प्रकार का विभाजक उपयोग करना हानिकारक हो सकता है। मैं "नाम" विभाजक को अर्धविराम (;) के रूप में बनाने का सुझाव देता हूं, और मूल्य विभाजक अल्पविराम (,) –