W Oracle możemy użyć LISTAGG()
funkcja konwertująca wyniki zapytania do listy oddzielonej przecinkami.
Tak więc, zamiast każdej wartości wyprowadzanej w osobnym wierszu, wszystkie wartości są wyprowadzane w jednym wierszu, oddzielonym przecinkiem (lub innym wybranym przez nas ogranicznikiem).
Przykład
Wyobraź sobie, że uruchamiamy następujące zapytanie:
SELECT last_name
FROM employees
WHERE job_id = 'IT_PROG';
Wynik:
LAST_NAME ____________ Hunold Ernst Austin Pataballa Lorentz
To zapytanie zwróciło pięć wierszy, każdy z inną wartością.
Jeśli chcemy, aby te wartości były wyprowadzane w jednym wierszu, możemy wykonać następujące czynności:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Wynik:
LISTAGG(LAST_NAME,',') ____________________________________________ Hunold, Ernst, Austin, Pataballa, Lorentz
Jedyne, co zrobiliśmy, to przekazanie nazwy kolumny do LISTAGG()
funkcję, a także wybrany przez nas ogranicznik.
Możemy użyć innego ogranicznika lub całkowicie pominąć ten argument, aby wszystkie elementy były połączone.
Funkcja akceptuje również DISTINCT
klauzula (aby usunąć zduplikowane wartości) i ORDER BY
klauzula (w celu uporządkowania wyjścia funkcji).
Funkcja może być również bardzo przydatna podczas grupowania wyników zapytań.
Zobacz LISTAGG()
Funkcja w Oracle, aby uzyskać więcej przykładów.