Usuário com melhor resposta
Contar registros repetidos dentro duma tabela e exibir o subtotal

Pergunta
-
Olá! Estou começando agora e tenho uma dúvida. Tenho uma tabela que é +ou- assim:
Aluno Curso
João Engenharia
José Administração
Paulo Medicina
Pedro Administração
Maria Medicina
Minha dúvida: preciso criar uma view que exiba quantas vezes o curso se repete.
Imagino que ficaria +ou- assim:
Aluno Curso
José Administração
Pedro Administração
Subtotal: 2
Maria Medicina
Paulo Medicina
Subtotal: 2
João Engenharia
Subtotal: 1
Obrigado a todos!
Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
SELECT Aluno, case when GROUPING_ID(Aluno, Curso) = 0 then Curso else 'Subtotal: ' + CAST(COUNT(*) AS VARCHAR) end as Curso FROM Tabela GROUP BY GROUPING SETS ( (Aluno, Curso), (Curso) )
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 4 de março de 2015 23:28
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 5 de março de 2015 19:28
Todas as Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
SELECT Aluno, case when GROUPING_ID(Aluno, Curso) = 0 then Curso else 'Subtotal: ' + CAST(COUNT(*) AS VARCHAR) end as Curso FROM Tabela GROUP BY GROUPING SETS ( (Aluno, Curso), (Curso) )
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 4 de março de 2015 23:28
- Marcado como Resposta Ricardo Barbosa Cortes quinta-feira, 5 de março de 2015 19:28
-
Guilherme,
Qual a sua versão do SQL Server?
Se for 2008 ou 2008 R2 você pode utilizar o COMPUTE BY como no link abaixo:
https://technet.microsoft.com/pt-br/library/ms181708(v=sql.105).aspx
Caso você esteja utilizando 2012 ou superior pode tentar a consulta abaixo:
SELECT Aluno, ISNULL(Curso,'TOTAL'), COUNT(*) AS TOTAL FROM TesteCompute GROUP BY Curso, Aluno WITH ROLLUP
Espero que o ajude.
[MCP | MCSA Microsoft SQL Server 2012 | MCTS Microsoft Dynamics CRM 2011]
-
Marcos,
A opção With Rollup esta presente no SQL Server desde a versão 2005!!!
Não entendi o porque você sugeriu o uso no Rollup como uma opção somente para o 2012.
Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
Junior,
De fato a opção With Rollup existe desde a versão 2005, eu sugeri utilizar ela para o caso de o Guilherme estar utilizando 2012 em diante, pois a opção Compute By não funcionou na versão 2012 quando fiz testes, eu não deveria ter limitado apenas a versão 2012 ou superior.
Obrigado por lembrar. :)
[MCP | MCSA Microsoft SQL Server 2012 | MCTS Microsoft Dynamics CRM 2011]
-
Junior,
De fato a opção With Rollup existe desde a versão 2005, eu sugeri utilizar ela para o caso de o Guilherme estar utilizando 2012 em diante, pois a opção Compute By não funcionou na versão 2012 quando fiz testes, eu não deveria ter limitado apenas a versão 2012 ou superior.
Obrigado por lembrar. :)
[MCP | MCSA Microsoft SQL Server 2012 | MCTS Microsoft Dynamics CRM 2011]
Marcos,
Sim perfeito, entendi, realmente o Compute By foi um dos recursos removidos no 2012.
Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]