V Oracle můžeme použít LISTAGG()
funkci převést naše výsledky dotazu na seznam oddělený čárkami.
Namísto toho, aby byla každá hodnota uvedena na samostatném řádku, jsou všechny hodnoty vypsány na jednom řádku odděleném čárkou (nebo jiným oddělovačem dle našeho výběru).
Příklad
Představte si, že spustíme následující dotaz:
SELECT last_name
FROM employees
WHERE job_id = 'IT_PROG';
Výsledek:
LAST_NAME ____________ Hunold Ernst Austin Pataballa Lorentz
Tento dotaz vrátil pět řádků, každý s jinou hodnotou.
Pokud chceme, aby se tyto hodnoty zobrazovaly na jednom řádku, můžeme provést následující:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Výsledek:
LISTAGG(LAST_NAME,',') ____________________________________________ Hunold, Ernst, Austin, Pataballa, Lorentz
Vše, co jsme udělali, bylo předat název sloupce do LISTAGG()
funkce, stejně jako námi zvolený oddělovač.
Můžeme použít jiný oddělovač nebo můžeme tento argument úplně vynechat, aby byly všechny položky zřetězeny.
Funkce také přijímá DISTINCT
klauzule (k odstranění duplicitních hodnot) a ORDER BY
klauzule (pro objednání výstupu funkce).
Funkce může být také docela užitečná při seskupování výsledků dotazů.
Viz LISTAGG()
Další příklady najdete v aplikaci Oracle.