В Oracle можем да използваме LISTAGG()
функция за преобразуване на резултатите от нашата заявка в списък, разделен със запетая.
Така че, вместо всяка стойност да се извежда в отделен ред, всички стойности се извеждат в един ред, разделени със запетая (или друг разделител по наш избор).
Пример
Представете си, че изпълняваме следната заявка:
SELECT last_name
FROM employees
WHERE job_id = 'IT_PROG';
Резултат:
LAST_NAME ____________ Hunold Ernst Austin Pataballa Lorentz
Тази заявка върна пет реда, всеки с различна стойност.
Ако искаме тези стойности да бъдат изведени на един ред, можем да направим следното:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Резултат:
LISTAGG(LAST_NAME,',') ____________________________________________ Hunold, Ernst, Austin, Pataballa, Lorentz
Всичко, което направихме, беше да предадем името на колоната на LISTAGG()
функция, както и избрания от нас разделител.
Можем да използваме различен разделител или да пропуснем този аргумент напълно, така че всички елементи да бъдат свързани.
Функцията също така приема DISTINCT
клауза (за премахване на дублиращи се стойности) и ORDER BY
клауза (за подреждане на изхода на функцията).
Функцията също може да бъде доста удобна при групиране на резултатите от заявката.
Вижте LISTAGG()
Функция в Oracle за повече примери.