Antes de que apareciera SQL Server 2017, no había un equivalente T-SQL de MySQL GROUP_CONCAT()
función. Esta función le permite devolver un conjunto de resultados como una lista separada por comas, en lugar de enumerar cada fila como una fila separada (como con un conjunto de resultados normal).
Antes de SQL Server 2017, si deseaba colocar su resultado en una lista separada por comas, necesitaba encontrar una solución, tal vez usando una combinación de STUFF()
, FOR XML
y PATH()
.
Sin embargo, T-SQL ahora tiene el STRING_AGG()
que está disponible en SQL Server 2017. Esta función hace más o menos lo mismo que GROUP_CONCAT()
de MySQL función (con algunas diferencias menores).
Sintaxis
La sintaxis del STRING_AGG()
la función es así:
STRING_AGG ( expression, separator ) [ <order_clause> ] <order_clause> ::= WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )
Donde expression
es una expresión de cualquier tipo. Las expresiones se convierten a NVARCHAR
o VARCHAR
tipos durante la concatenación. Los tipos que no son cadenas se convierten a NVARCHAR
tipo.
Donde el separador es una expresión de NVARCHAR
o VARCHAR
type que se usa como separador para cadenas concatenadas. Puede ser literal o variable.
La cláusula de pedido (opcional) consta de WITHIN GROUP
seguido de ORDER BY ASC
o ORDER BY DESC
entre paréntesis. ASC
ordena el resultado en orden ascendente. Este es el valor predeterminado. DESC
ordena el resultado en orden descendente.
Ejemplo
Aquí hay un ejemplo rápido de STRING_AGG()
función:
SELECT STRING_AGG(Genre, ',') AS Result FROM Genres;
Resultado:
Result -------------------------------------------- Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk
Como puede ver, el conjunto de resultados se muestra como una lista separada por comas. Esto se debe a que nuestro segundo argumento es una coma, que especifica que se debe usar una coma como separador.
Aquí está el mismo conjunto de resultados pero sin el STRING_AGG()
función:
SELECT Genre AS Result FROM Genres;
Resultado:
Result ------- Rock Jazz Country Pop Blues Hip Hop Rap Punk
Así que solo un conjunto de resultados normal.
Para obtener más ejemplos, como agrupar, manejar valores nulos y ordenar los resultados, consulte Cómo devolver los resultados de una consulta como una lista separada por comas en SQL Server.