Oracle/PLSQL: función LISTAGG

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: función LISTAGG

Este tutorial de Oracle explica cómo usar Oracle/PLSQL función LISTAGG Con sintaxis y ejemplos.

describir

La función LISTAGG de Oracle/PLSQL concatena el valor de la columna_medida para cada GRUPO de acuerdo con la cláusula order_by_.

sintaxis

La sintaxis de la función LISTAGG en Oracle/PLSQL es:

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

parámetro o parámetro

columna_medida La columna o expresión cuyos valores desea unir en el conjunto de resultados. Los valores nulos en la columna_medida se ignoran. El separador es opcional. Es el delimitador que se utiliza para separar los valores de la columna de medida al generar resultados. order_by_clause Determina el orden en que se devuelven los valores concatenados (es decir: Measure_column).

devolver los bienes

La función LISTAGG devuelve un valor de cadena.

aplicar para

La función LISTAGG está disponible en las siguientes versiones de Oracle/PLSQL:

  • Oracle 12c, Oracle 11g Versión 2

ejemplo

La función LISTAGG se puede utilizar en Oracle/PLSQL.

Dado que esta es una función más difícil de entender, veamos un ejemplo con datos para demostrar lo que genera la función.

Si dispone de una tabla de productos con los siguientes datos:

ID del Producto nombre del producto
1001 plátano
1002 manzana
1003 pera
1004 mandarina

Luego ejecuta una declaración SELECT usando la función LISTAGG:

SELECT LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY product_name) "Product_Listing"
FROM products;

Obtendrá los siguientes resultados:

Listado_de_productos
manzana, plátano, naranja, pera

En este ejemplo, el resultado de la función LISTAGG se muestra en un solo campo, con valores separados por comas.

Puede cambiar la cláusula ORDER BY para usar la palabra clave DESC y cambiar la declaración SELECT de la siguiente manera:

SELECT LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY product_name DESC) "Product_Listing"
FROM products;

Esto producirá los siguientes resultados:

Listado_de_productos
peras, naranjas, plátanos, manzanas

Puede cambiar el delimitador de coma a punto y coma de esta manera:

SELECT LISTAGG(product_name, '; ') WITHIN GROUP (ORDER BY product_name DESC) "Product_Listing"
FROM products;

Esto cambiará su resultado de la siguiente manera:

Listado_de_productos
peras, naranjas, plátanos, manzanas