sql >> Database teknologi >  >> RDS >> Oracle

Oracle GROUP_CONCAT() ækvivalent

Nogle RDBMS'er har en GROUP_CONCAT() funktion, der giver dig mulighed for at returnere en forespørgselskolonne som en afgrænset liste (f.eks. en kommasepareret liste). MySQL og MariaDB er to, der har sådan en funktion.

PostgreSQL og SQL Server har lignende funktioner kaldet STRING_AGG() .

Oracle har på den anden side LISTAGG() funktion, der stort set gør det samme (og måske mere).

Så du kan sige, at LISTAGG() er Oracles GROUP_CONCAT() tilsvarende.

Eksempel

Her er et grundlæggende eksempel for at demonstrere, hvordan Oracles LISTAGG() funktion virker:

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

Resultat:

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

I dette tilfælde specificerede jeg, at separatoren er et komma.

Her er, hvad der sker, når vi bare laver forespørgslen uden LISTAGG() funktion:

SELECT region_name 
FROM regions;

Resultat:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

Vi får fire rækker, hver med en separat værdi, i stedet for en kommasepareret række, der indeholder alle værdier.

LISTAGG() Funktionen gør det også muligt for os at bestille resultaterne, kun returnere unikke værdier (via DISTINCT klausul) og mere.

Se LISTAGG() Funktion i Oracle for flere eksempler.


  1. LPAD i SQL Server 2008

  2. Hvorfor du skal begrænse brugeradgang til din database

  3. Migrering af data ved hjælp af Network_link

  4. Materialiseret visning vs. tabeller:Hvad er fordelene?