🔹 Introdução
O SQL Server permite realizar agregações de dados de diversas formas. A função STRING_AGG é uma das maneiras mais eficientes de concatenar valores de uma coluna agrupados por outra coluna. Neste artigo, exploraremos como utilizar STRING_AGG para realizar essa tarefa de forma eficaz.
🔹 Implementação do STRING_AGG no SQL Server
No SQL Server 2017+, a função STRING_AGG pode ser usada para concatenar valores distintos de uma coluna, agrupados por outra coluna. Exemplo:
SELECT col1, STRING_AGG(col2, ',') WITHIN GROUP (ORDER BY col2)
FROM (
SELECT DISTINCT col1, col2
FROM foo
) AS subquery
GROUP BY col1;
⚠️ Alternativa para SQL Server 2016 e anteriores: Podemos utilizar FOR XML PATH para realizar a concatenação:
SELECT col1,
STUFF((
SELECT ',' + col2
FROM (
SELECT DISTINCT col1, col2 FROM foo
) AS sub
WHERE sub.col1 = main.col1
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS concatenado
FROM foo AS main
GROUP BY col1;
✅ Conclusão
-
📌 No SQL Server 2017+, a função STRING_AGG é a alternativa mais simples para concatenação de valores.
-
📌 Em versões anteriores do SQL Server, a concatenação pode ser feita usando FOR XML PATH e STUFF.
-
📌 Ambas as abordagens permitem agregar dados de forma eficiente, dependendo da versão do SQL Server utilizada.