Oracle में, LISTAGG()
फ़ंक्शन हमें कई पंक्तियों से डेटा को एक पंक्ति में संयोजित करने में सक्षम बनाता है।
हमारे पास एक विभाजक (जैसे अल्पविराम) निर्दिष्ट करने का विकल्प है। हम LISTAGG()
. द्वारा उत्पादित परिणामों को भी ऑर्डर कर सकते हैं समारोह, और बहुत कुछ।
सिंटैक्स
वाक्य रचना इस प्रकार है:
LISTAGG( [ ALL | DISTINCT ] measure_expr [, 'delimiter'] [listagg_overflow_clause] )
[ WITHIN GROUP order_by_clause ] [OVER query_partition_clause]
जहां listagg_overflow_clause
है:
{ ON OVERFLOW ERROR }
|
{ ON OVERFLOW TRUNCATE [ 'truncation-indicator' ] [ { WITH | WITHOUT } COUNT ] }
उदाहरण
मान लीजिए कि हम निम्नलिखित क्वेरी चलाते हैं:
SELECT region_name
FROM regions;
परिणाम:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
हम LISTAGG()
. का उपयोग कर सकते हैं उन परिणामों को अल्पविराम से अलग की गई सूची में बदलने के लिए:
SELECT LISTAGG(region_name, ', ')
FROM regions;
परिणाम:
LISTAGG(REGION_NAME,',') _________________________________________________ Europe, Americas, Asia, Middle East and Africa
विभाजक बदलें
हम दूसरे तर्क को भिन्न विभाजक में बदल सकते हैं:
SELECT LISTAGG(region_name, '; ')
FROM regions;
परिणाम:
Europe; Americas; Asia; Middle East and Africa
विभाजक को छोड़ दें
हम दूसरे तर्क को छोड़ सकते हैं ताकि प्रत्येक मान को विभाजक के बिना संयोजित किया जा सके:
SELECT LISTAGG(region_name)
FROM regions;
परिणाम:
EuropeAmericasAsiaMiddle East and Africa
परिणाम ऑर्डर करें
हम WITHIN GROUP (ORDER BY...)
. का उपयोग कर सकते हैं LISTAGG()
. के आउटपुट को ऑर्डर करने के लिए क्लॉज समारोह:
SELECT LISTAGG(region_name, ',') WITHIN GROUP (ORDER BY region_name ASC)
FROM regions;
परिणाम:
Americas,Asia,Europe,Middle East and Africa
समूहीकृत क्वेरी में उपयोग
हम LISTAGG()
. का उपयोग कर सकते हैं इस तरह के परिणाम प्रदान करने के लिए समूहीकृत क्वेरी के भीतर कार्य करें:
SELECT
region_id,
LISTAGG(country_id, ', ') WITHIN GROUP (ORDER BY country_id ASC) AS "Countries"
FROM countries
GROUP BY region_id
ORDER BY region_id;
परिणाम:
REGION_ID Countries ____________ _________________________________ 1 BE, CH, DE, DK, FR, IT, NL, UK 2 AR, BR, CA, MX, US 3 AU, CN, HK, IN, JP, SG 4 EG, IL, KW, NG, ZM, ZW
केवल विशिष्ट मान लौटाएं
हम DISTINCT
. का उपयोग कर सकते हैं केवल अद्वितीय मान लौटाने के लिए क्लॉज:
SELECT LISTAGG(DISTINCT region_id, ', ')
FROM regions;
परिणाम:
1, 2, 3, 4
इस फ़ंक्शन के साथ आप क्या कर सकते हैं, इस बारे में अधिक जानकारी के लिए Oracle के दस्तावेज़ देखें।