Някои RDBMS имат GROUP_CONCAT() функция, която ви позволява да върнете колона на заявка като разделен списък (например списък, разделен със запетая). MySQL и MariaDB са две, които имат такава функция.
PostgreSQL и SQL Server имат подобни функции, наречени STRING_AGG() .
Oracle, от друга страна, има LISTAGG() функция, която прави почти същото нещо (а може би и повече).
Така че можете да кажете, че LISTAGG() е GROUP_CONCAT() на Oracle еквивалент.
Пример
Ето основен пример, за да демонстрирате как LISTAGG() на Oracle функция работи:
SELECT LISTAGG(region_name, ',')
FROM regions; Резултат:
LISTAGG(REGION_NAME,',') ______________________________________________ Europe,Americas,Asia,Middle East and Africa
В този случай уточних, че разделителят е запетая.
Ето какво се случва, когато просто направим заявката без LISTAGG() функция:
SELECT region_name
FROM regions; Резултат:
REGION_NAME _________________________ Europe Americas Asia Middle East and Africa
Получаваме четири реда, всеки с отделна стойност, вместо един ред, разделен със запетая, който съдържа всички стойности.
LISTAGG() функция също така ни позволява да подреждаме резултатите, да връщаме само уникални стойности (чрез DISTINCT клауза) и още.
Вижте LISTAGG() Функция в Oracle за още примери.