समग्र कार्य के साथ सरल 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;
लेकिन आमतौर पर सबक्वायरी में पंक्तियों को सॉर्ट करना तेज़ होता है। देखें:
- एसक्यूएल को पोस्टग्रेज करें - चुनिंदा में ऐरे बनाएं