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

Returner forespørgselsresultater som en kommasepareret liste i Oracle

I Oracle kan vi bruge LISTAGG() funktion til at konvertere vores forespørgselsresultater til en kommasepareret liste.

Så i stedet for at hver værdi udskrives i en separat række, udlæses alle værdier i en enkelt række, adskilt af et komma (eller en anden afgrænsning efter vores valg).

Eksempel

Forestil dig, at vi kører følgende forespørgsel:

SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Resultat:

   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Denne forespørgsel returnerede fem rækker med hver sin værdi.

Hvis vi ønsker, at disse værdier skal udskrives på en enkelt række, kan vi gøre følgende:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Resultat:

                      LISTAGG(LAST_NAME,',') 
____________________________________________ 
Hunold, Ernst, Austin, Pataballa, Lorentz    

Det eneste, vi gjorde, var at videregive kolonnenavnet til LISTAGG() funktion, samt vores valgte skilletegn.

Vi kan bruge en anden afgrænsning, eller vi kan helt udelade det argument, så alle elementer er sammenkædet.

Funktionen accepterer også en DISTINCT klausul (for at fjerne duplikerede værdier) og en ORDER BY klausul (for at bestille output af funktionen).

Funktionen kan også være ret praktisk, når du grupperer forespørgselsresultater.

Se LISTAGG() Funktion i Oracle for flere eksempler.


  1. Hvordan holder data ikke sorteret?

  2. Får maks. værdi fra rækker og forbinder til en anden tabel

  3. MySQL månedligt udsalg af de seneste 12 måneder inklusive måneder uden udsalg

  4. Hvad er den aktuelle visning af APPL_TOP snapshots