sql >> Base de Datos >  >> RDS >> Oracle

Equivalente de Oracle GROUP_CONCAT()

Algunos RDBMS tienen un GROUP_CONCAT() función que le permite devolver una columna de consulta como una lista delimitada (por ejemplo, una lista separada por comas). MySQL y MariaDB son dos que tienen esa función.

PostgreSQL y SQL Server tienen funciones similares llamadas STRING_AGG() .

Oracle, por otro lado, tiene el LISTAGG() función que hace más o menos lo mismo (y quizás más).

Así que podrías decir que LISTAGG() es GROUP_CONCAT() de Oracle equivalente.

Ejemplo

Aquí hay un ejemplo básico para demostrar cómo LISTAGG() de Oracle la función funciona:

SELECT LISTAGG(region_name, ',') 
FROM regions;

Resultado:

                      LISTAGG(REGION_NAME,',') 
______________________________________________ 
Europe,Americas,Asia,Middle East and Africa   

En este caso, especifiqué que el separador es una coma.

Esto es lo que sucede cuando hacemos la consulta sin LISTAGG() función:

SELECT region_name 
FROM regions;

Resultado:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

Obtenemos cuatro filas, cada una con un valor independiente, en lugar de una fila separada por comas que contiene todos los valores.

El LISTAGG() La función también nos permite ordenar los resultados, devolver solo valores únicos (a través de DISTINCT cláusula), y más.

Ver LISTAGG() Función en Oracle para más ejemplos.