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

एक कॉलम की कई परिणाम पंक्तियों को एक में, दूसरे कॉलम द्वारा समूहित करें

समग्र कार्य के साथ सरल 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;

लेकिन आमतौर पर सबक्वायरी में पंक्तियों को सॉर्ट करना तेज़ होता है। देखें:

  • एसक्यूएल को पोस्टग्रेज करें - चुनिंदा में ऐरे बनाएं


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में क्रॉसस्टैब के लिए गतिशील रूप से कॉलम उत्पन्न करें

  2. django में समग्र प्राथमिक कुंजी

  3. PostgreSQL में ऐरे कैसे बनाएं

  4. SQL पंक्ति वापसी क्रम

  5. एक स्ट्रिंग की जांच करने के लिए पोस्टग्रेज क्वेरी एक संख्या है