जब तक आप आउटपुट को एक सरणी (या संग्रह) के रूप में सहेजने के लिए संग्रहीत प्रक्रिया में इसका उपयोग नहीं कर रहे हैं, LISTAGG के साथ एक क्वेरी पर्याप्त होना चाहिए और समान आउटपुट देता है।
select ID , LISTAGG(Category,',') WITHIN GROUP ( ORDER BY ID ) Categories
FROM yourtable GROUP BY ID;
ऑरैकल में, हमारे पास array_agg . जैसा सीधा रूपांतरण फ़ंक्शन नहीं है . हालांकि, आप एक उपयोगकर्ता-परिभाषित संग्रह प्रकार बना सकते हैं, फिर CAST . का उपयोग करें और COLLECT इसे NESTED TABLE . में बदलने का कार्य करता है वही वांछित आउटपुट प्राप्त करने के लिए।
सबसे पहले, एक संग्रह बनाएं TYPE ।
create or replace TYPE categorytype as TABLE OF VARCHAR2(20);
अब, इस क्वेरी को चलाना string_agg . का उपयोग करने के बराबर है या LISTAGG , हालांकि categories एक सरणी या संग्रह है , एक स्ट्रिंग के बजाय।
select id, CAST ( COLLECT(Category) as categorytype ) categories
FROM yourtable group by id;
| ID | CATEGORIES |
|----|------------|
| 1 | Cat1,Cat2 |
| 2 | Cat3,Cat4 |