समग्र कार्य के साथ सरल string_agg() (9.0 या बाद के संस्करण पोस्ट करें):
SELECT movie, string_agg(actor, ', ') AS actor_list
FROM tbl
GROUP BY 1;
1 GROUP BY 1 में एक स्थितीय संदर्भ है और GROUP BY movie . के लिए एक शॉर्टकट है इस मामले में।
string_agg() डेटा प्रकार की अपेक्षा करता है text इनपुट के रूप में। अन्य प्रकारों को स्पष्ट रूप से डालने की आवश्यकता है (actor::text ) - जब तक text . के लिए एक निहित कास्ट परिभाषित किया गया है - जो अन्य सभी वर्ण प्रकारों के लिए मामला है (varchar , character , "char" ), और कुछ अन्य प्रकार।
जैसा कि इसापिर ने टिप्पणी की, आप एक ORDER BY add जोड़ सकते हैं एक क्रमबद्ध सूची प्राप्त करने के लिए कुल कॉल में खंड - क्या आपको इसकी आवश्यकता होनी चाहिए। पसंद:
SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY 1; लेकिन आमतौर पर सबक्वायरी में पंक्तियों को सॉर्ट करना तेज़ होता है। देखें:
- एसक्यूएल को पोस्टग्रेज करें - चुनिंदा में ऐरे बनाएं