Espero que sim, vamos para mais uma dica com T-SQL…
Deixo aqui um exemplo simples de query com uso da função CONCAT.
Não tem muito segredo, você pode usar essa função para concatenar até 256 argumentos, facilitando a vida de quem precisa juntar textos de colunas e tabelas diferentes para exibir mensagens por exemplo.
Abaixo uso do CONCAT para exibir uma breve mensagem para alguns alunos, que concluíram com sucesso um curso de Power BI com uma determinada nota.
Olha que legal, usando texto de colunas e tabelas diferentes, foi possível montar uma única coluna com o texto desejado.
Bacana né?
Espero ter ajudado com essa simples contribuição.
Desejo a todos uma ótima semana, um grande abraço e até o próximo post pessoal!
Espero que sim, vamos para mais uma dica com T-SQL…
Hoje vou deixar aqui um exemplo de query com TOP, você deve tá pensando: “ah mais já sei usar TOP no SQL server e ajuda sempre!”. Entendo que sim, mas você já precisou passar pelo caso, onde precisa ter certeza que aquele TOP estava retornando tudo que precisava? Vamos para um exemplo bem simples, mas que pode te ajudar em algum momento…
Supondo que você precise sortear uma Caneca personalizada para o primeiro, uma caneta para o segundo e adesivos para o 3 colocado de um determinado curso, mas você precisa garantir que são apenas 3 participantes que possuem as melhores notas desse curso. Entendemos que os prêmios são para os 3 primeiros com as melhores notas.
Até aqui tudo bem, um Top 3 por um campo de Nota/Avaliação, resolve o problema, mas e se na Terceira posição existir mais de uma pessoa, como saber sem alterar a quantidade do TOP?
Para essa perguntas que o T-SQL consegue nos ajudar, usando um argumento da clausula TOP, esse argumento é o WITH TIES, ou seja SELECT TOP N WITH TIES.
Vamos ao exemplo. Caso fosse de fato, apenas 3 participantes com as melhores notas, seu simples TOP resolveria, certo?
Vamos garantir que não existe mais de 3 participantes com melhores notas usando o argumento WITH TIES
Veja que outros 2 participantes ficariam de fora do premio, claro se você simplesmente deixasse de usar esse argumento ou deixasse de alterar o número na cláusula TOP…
Lembrando que o Argumento WITH TIES precisa de uma cláusula ORDER BY.
Bacana né? Espero ter ajudado com essa simples contribuição e se você gostou da um Like nesse post e compartilha, por favor…
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.
Fala pessoal, tudo bem com vocês? Espero que sim, pois sei que infelizmente essa pandemia está levando entes queridos que amamos muito, me solidarizo com todos vocês e tenho a expectativa por dias melhores.
Fiquei muito tempo longe do Blog e agora vou contar um pouco dos motivos que me afastaram.
Pelos quase 2 anos desde o último post, estive bem atarefado trabalhando muito em uma grande corretora de investimentos (XP Inc), foi uma grande experiência, fiz novas amizades, escrevi muitas querys, fiz muitas integrações de dados e claro aprendi um pouco mais sobre o mercado financeiro.
Foi um período que exigiu bastante do meu pouco conhecimento com T-SQL e me deu a oportunidade de aprender mais sobre SQL Server Integration Services o famoso (SSIS) e por consequência Power BI entre outras ferramentas de Data Visualization.
Com toda dedicação ao trabalho e as grandes responsabilidades, acabei passando muito tempo longe de compartilhar um pouco do que aprendi… Então chegou a hora de voltar e escrever um monte de post para ajudar a galera, certo? Quero muito contribuir, mesmo estando em uma nova jornada, farei no mínimo um post por mês.
Desejo a todos uma ótima semana até o próximo post pessoal.
Hoje vamos ver o que se pode fazer com o comando Merge, utilizado no MS SQL SERVER, ele ajuda a mesclar dados entre duas fontes (origem, destino).
É possível atualizar, deletar e inserir dados, abaixo um exemplo prático.
USE TEMPDB GO
–Criação da tabela temporária para teste; CREATE TABLE #TMPA (Id INT Identity not null, Nome VARCHAR(100))
–Inserindo os dados de teste na tabela de destino INSERT #TMPA VALUES (‘Felippe’), (‘Lucas’)
SELECT * FROM #TMPA
–Tabela de origem CREATE TABLE #TMPB (Nome VARCHAR(100))
–Realizando Merge com INSERT e UPDATE para dados já existentes;
MERGE #TMPA AS ta USING (SELECT nome FROM #TMPB) AS tb ON (ta.nome = tb.nome) WHEN NOT MATCHED THEN INSERT (nome) VALUES (tb.Nome) WHEN MATCHED THEN UPDATESET ta.nome = tb.nome;
Após realizar o merge, veja como ficou:
SELECT * FROM #TMPA
Bom, isso foi um exemplo básico, apenas para saber como aplicar o Merge no seu desenvolvimento, para saber sobre outros comandos possíveis com merge consulte MERGE (Transact-SQL).