sql >> Database >  >> RDS >> Oracle

Oracle GROUP_CONCAT() Equivalent

Sommige RDBMS'en hebben een GROUP_CONCAT() functie waarmee u een querykolom kunt retourneren als een lijst met scheidingstekens (bijvoorbeeld een door komma's gescheiden lijst). MySQL en MariaDB zijn twee die zo'n functie hebben.

PostgreSQL en SQL Server hebben vergelijkbare functies genaamd STRING_AGG() .

Oracle daarentegen heeft de LISTAGG() functie die vrijwel hetzelfde doet (en misschien meer).

Je zou dus kunnen zeggen dat LISTAGG() is GROUP_CONCAT() van Oracle gelijkwaardig.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren hoe Oracle's LISTAGG() functie werkt:

SELECT LISTAGG(region_name, ',') 
FROM regions;

Resultaat:

                      LISTAGG(REGION_NAME,',') 
______________________________________________ 
Europe,Americas,Asia,Middle East and Africa   

In dit geval heb ik aangegeven dat het scheidingsteken een komma is.

Dit is wat er gebeurt als we de query gewoon uitvoeren zonder de LISTAGG() functie:

SELECT region_name 
FROM regions;

Resultaat:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

We krijgen vier rijen, elk met een aparte waarde, in plaats van één door komma's gescheiden rij die alle waarden bevat.

De LISTAGG() functie stelt ons ook in staat om de resultaten te ordenen, alleen unieke waarden te retourneren (via de DISTINCT clausule), en meer.

Zie LISTAGG() Functie in Oracle voor meer voorbeelden.


  1. Hoe krijg ik een lijst met MySQL-weergaven?

  2. Driver.getConnection loopt vast bij gebruik van SQLServer-stuurprogramma en Java 1.6.0_29

  3. goede postgresql-client voor Windows?

  4. SQL Server Prestaties TOP IO Query -1