Fala pessoal, tudo bem com vocês?
Espero que sim, esse ano vou subir aqui algumas dicas para te ajudar com T-SQL entre outras coisas.
Ano passado(2022) foi um ano bem diferente para mim.
Comecei o ano com tudo, porém logo no inicio do ano fui afetado por uma crise de ansiedade, segundo os médicos, que infelizmente causou outras doenças, mas que após um bom tempo tomando medicamentos e se cuidando, consegui ficar bem, e novamente aqui estou =)
Quero compartilhar mais situações do dia a dia com soluções, que podem ser úteis para todos, assim como foi para mim.
Vou iniciar aqui explicando um pouco sobre a função STRING_AGG, você não deve conhecer ainda, se já conhece, muito bom, fique a vontade para contribuir com mais cases aqui.
Bom, eu não conhecia até em uma situação do meu dia, eu ter que precisar, no passado usei por muito tempo a função STUFF, essa função já me ajudou muito, mas confesso que a função STRING_AGG é de cara muito mais simples e fácil de usar.
Chega de papo e vamos para um case…
Supondo que tenho uma tabela de Cursos, Alunos e Matriculas, quero ver todos os cursos separado por virgula de cada aluno.
Abaixo, veja que temos um select na tabela de Cusros com campos simples, é apenas um exemplo ilustrativo, mas para que você entenda a ideia, vou colocar as tabelas separadas e por último a solução usada.

Abaixo veja as tabela de Alunos e Matriculas.


Até aqui temos as tabelas, mas qual era mesmo o pedido?
Temos que pegar todos os cursos de cada aluno e separar por vírgula em uma mesma linha, certo?
Vamos para solução…

Que simples não?
Usando STRING_AGG com o nome do campo que queremos e a vírgula que precisamos, dessa forma problema resolvido.
Aqui deixo as observações, essa functions funciona para SQL Server 2017 em diante, as versões 2016 para trás, ainda é necessário usar a função STUFF com XML para esse tipo de situação.
Espero ter ajudado com essa simples contribuição, mas como foi útil em um case do meu dia a dia, espero que seja útil para vocês também.
Um grande abraço e até o próximo post pessoal!