SQL Server: Agrupamento e Concatenacão de Valores no Oracle e SQL Server

🔹 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.

Data de Publicação: 16-02-2025

Categoria: SQL Server