यदि मैं नाम एकत्र करने के लिए array_agg
का उपयोग करता हूं, तो मुझे अपने नाम अल्पविराम से अलग करते हैं, लेकिन यदि null
मान है, तो उस नल को कुल में एक नाम के रूप में भी लिया जाता है। उदाहरण के लिए:postgres का उपयोग कर string_agg में array_agg में शून्य मानों को कैसे बाहर निकालना है?
SELECT g.id,
array_agg(CASE WHEN g.canonical = 'Y' THEN g.users ELSE NULL END) canonical_users,
array_agg(CASE WHEN g.canonical = 'N' THEN g.users ELSE NULL END) non_canonical_users
FROM groups g
GROUP BY g.id;
यह सिर्फ Larry,Phil
(मेरी 9.1.2, यह NULL,Larry,Phil
से पता चलता में) के बजाय ,Larry,Phil
देता है। this बेला में के रूप में
इसके बजाय, अगर मैं string_agg()
उपयोग करते हैं, यह मुझे केवल नाम (खाली अल्पविराम या nulls के बिना) here
तरह से पता चलता है कि मैं सर्वर पर स्थापित Postgres 8.4
है, और string_agg()
नहीं करता ' वहाँ काम नहीं करते हैं। string_agg() के समान array_agg काम करने का कोई तरीका है?
ज्यादा इस विषय पर इस PostgreSQL मेलिंग सूची धागा देखें: http://postgresql.1045698.n5.nabble.com/array-agg-NULL-Handling-td2798942.html –
मैं माफी चाहता हूँ, मैं डॉन ' टी लगता है कि उस धागे में कोई समाधान नहीं है .. – Daud
उस धागे में दो समाधान हैं। एक एक समारोह बनाना है और दूसरा (सिर्फ सुझाव नहीं दिया गया है) मैंने जवाब दिया है। –