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

LISTAGG () Oracle में फ़ंक्शन

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 के दस्तावेज़ देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्वयं संदर्भ तालिका पर SQL पुनरावर्ती क्वेरी (ओरेकल)

  2. Oracle के साथ और MATERIALIZE संकेत कार्यों के लिए स्वायत्त लेनदेन के रूप में कार्य करता है

  3. ग्रोवी एसक्यूएल ओरेकल ऐरे फंक्शन/प्रक्रिया आउट पैरामीटर पंजीकरण

  4. फिक्स "इंटेल डिफ़ॉल्ट उपसर्ग (/ usr / स्थानीय) में एआरएम प्रोसेसर पर होमब्रू में स्थापित नहीं कर सकता!"

  5. एसक्यूएल कॉलम उपनाम को पहचान नहीं रहा है जहां खंड