I Oracle kan vi använda LISTAGG()
funktion för att konvertera våra frågeresultat till en kommaseparerad lista.
Så istället för att varje värde matas ut i en separat rad, matas alla värden ut på en enda rad, åtskilda av ett kommatecken (eller någon annan avgränsare som vi väljer).
Exempel
Föreställ dig att vi kör följande fråga:
SELECT last_name
FROM employees
WHERE job_id = 'IT_PROG';
Resultat:
LAST_NAME ____________ Hunold Ernst Austin Pataballa Lorentz
Den frågan returnerade fem rader, var och en med olika värde.
Om vi vill att dessa värden ska matas ut på en enda rad kan vi göra följande:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Resultat:
LISTAGG(LAST_NAME,',') ____________________________________________ Hunold, Ernst, Austin, Pataballa, Lorentz
Allt vi gjorde var att skicka kolumnnamnet till LISTAGG()
funktion, samt vår valda avgränsare.
Vi kan använda en annan avgränsare eller så kan vi utelämna det argumentet helt så att alla objekt sammanfogas.
Funktionen accepterar även en DISTINCT
sats (för att ta bort dubbletter av värden) och en ORDER BY
klausul (för att beställa utdata från funktionen).
Funktionen kan också vara ganska praktisk när du grupperar frågeresultat.
Se LISTAGG()
Funktion i Oracle för fler exempel.