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.