LISTAGG ФУНКЦИЯ

В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию LISTAGG с синтаксисом и примерами.

Описание

Oracle/PLSQL функция LISTAGG объединяет значения measure_column для каждой группы на основе order_by_clause.

Синтаксис

Синтаксис Oracle/PLSQL функции LISTAGG:

LISTAGG (measure_column [, 'delimiter'])
WITHIN GROUP (order_by_clause) [OVER query_partition_clause]

Параметры или аргументы

measure_column столбец, значения которого вы хотите объединить вместе в наборе результатов. Нулевые значения в measure_column игнорируются.

delimiter не является обязательным. Это разделитель используется при разделении значений measure_column при выводе результатов.

order_by_clause определяет порядок связанных значении (т.е.: measure_column) которые возвращаются.

Функция LISTAGG возвращает string значение.

Применение

Функцию LISTAGG можно использовать в следующих версиях Oracle/PLSQL:

  • Oracle 12c, Oracle 11g Release 2

Пример

Функция LISTAGG может быть использована в Oracle/PLSQL.

Так как это более сложная функция, то чтобы ее понять, давайте посмотрим на примере, который включает данные, которые функция демонстрирует на выходе.

Если у вас есть таблица products со следующими данными:

PRODUCT_ID PRODUCT_NAME
1001 Bananas
1002 Apples
1003 Pears
1004 Oranges

И вы выполните следующий SQL запрос, используя функцию LISTAGG:

То получите следующий результат:

Product_Listing
Apples, Bananas, Oranges, Pears

В этом примере, результат функции LISTAGG выведется в одном поле со значениями, разделенными запятыми.

Вы можете изменить сортировку, используя ключевое слово DESC и изменить запрос SELECT следующим образом:

Получим следующий результат:

Product_Listing
Pears, Oranges, Bananas, Apples

Вы можете изменить разделитель запятую на точку с запятой следующим образом:

Эти изменения выразятся следующим образом:

Product_Listing
Pears; Oranges; Bananas; Apples