Usuário com melhor resposta
Select mesmo campo com dados diferentes

Pergunta
-
<object height="0" id="28e9e95b-eb3b-afb0-da88-48bdeb97a2b5" type="application/gas-events-abn" width="0"></object>
Bom dia meus amigos
Preciso fazer um SELECT
esse SELECT tem que me retornar o [Status do Aluno]:
[Status do Aluno] AS Falta
[Status do Aluno] AS Presença
Sendo que o [Status do Aluno] Pode ter valor 1 = Presença e valor 2 = Falta
Até o momento meu SQL está assim (incorreto):
SELECTMatrículas.[Código da Matrícula],Alunos.[Código do Aluno],Alunos.[Nome do Aluno],SUM([Presenças das Matrículas].[Status do Aluno] = 2) As Presença,SUM([Presenças das Matrículas].[Status do Aluno] = 1) As Falta,SUM([Presenças das Matrículas].[Reposição]) As ReposiçãoFROM(Matrículas INNER JOIN Alunos ON Matrículas.[Código do Aluno] = Alunos.[Código do Aluno]) INNER JOIN [Presenças das Matrículas] ON Matrículas.[Código da Matrícula] = [Presenças das Matrículas].[Código da Matrícula]WHEREMatrículas.[Matrícula Ativa] = -1GROUP BYMatrículas.[Código da Matrícula],Alunos.[Código do Aluno],Alunos.[Nome do Aluno]Se alguém precisar eu mando o exemplo do Banco, só me passar o e-mailMUITO OBRIGADO
Dalto Blanco - Ciência da computação
Respostas
-
Dalton,
Como ficou a sua query completa?
SELECT Matrículas.[Código da Matrícula], Alunos.[Código do Aluno], Alunos.[Nome do Aluno], COUNT(case when [Presenças das Matrículas].[Status do Aluno] = 1 then 1 end) As Presença, COUNT(case when [Presenças das Matrículas].[Status do Aluno] = 2 then 1 end) As Falta, SUM([Presenças das Matrículas].[Reposição]) As Reposição FROM (Matrículas INNER JOIN Alunos ON Matrículas.[Código do Aluno] = Alunos.[Código do Aluno]) INNER JOIN [Presenças das Matrículas] ON Matrículas.[Código da Matrícula] = [Presenças das Matrículas].[Código da Matrícula] WHERE Matrículas.[Matrícula Ativa] = -1 GROUP BY Matrículas.[Código da Matrícula], Alunos.[Código do Aluno], Alunos.[Nome do Aluno]
Sobre o Case confira a página abaixo:
http://msdn.microsoft.com/en-us/library/ms181765.aspx
Da forma como sugeri o Case deverá retornar 1 quando a condição for verdadeira ou null (nesse caso o Count não conta a linha) quando for falsa.
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Dalto P. Blanco quarta-feira, 24 de julho de 2013 19:43
-
Não conheço o Access, não sei se vai funcionar, mas experimente dessa forma:
COUNT(iif([Presenças das Matrículas].[Status do Aluno] = 1, 1, null)) As Presença, COUNT(iif([Presenças das Matrículas].[Status do Aluno] = 2, 1, null)) As Falta,
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Dalto P. Blanco quarta-feira, 24 de julho de 2013 19:43
Todas as Respostas
-
Boa tarde,
Experimente dessa forma:
COUNT(case when [Presenças das Matrículas].[Status do Aluno] = 1 then 1 end) As Presença, COUNT(case when [Presenças das Matrículas].[Status do Aluno] = 2 then 1 end) As Falta,
Espero que ajude.Assinatura: http://www.imoveisemexposicao.com.br
-
-
Dalton,
Como ficou a sua query completa?
SELECT Matrículas.[Código da Matrícula], Alunos.[Código do Aluno], Alunos.[Nome do Aluno], COUNT(case when [Presenças das Matrículas].[Status do Aluno] = 1 then 1 end) As Presença, COUNT(case when [Presenças das Matrículas].[Status do Aluno] = 2 then 1 end) As Falta, SUM([Presenças das Matrículas].[Reposição]) As Reposição FROM (Matrículas INNER JOIN Alunos ON Matrículas.[Código do Aluno] = Alunos.[Código do Aluno]) INNER JOIN [Presenças das Matrículas] ON Matrículas.[Código da Matrícula] = [Presenças das Matrículas].[Código da Matrícula] WHERE Matrículas.[Matrícula Ativa] = -1 GROUP BY Matrículas.[Código da Matrícula], Alunos.[Código do Aluno], Alunos.[Nome do Aluno]
Sobre o Case confira a página abaixo:
http://msdn.microsoft.com/en-us/library/ms181765.aspx
Da forma como sugeri o Case deverá retornar 1 quando a condição for verdadeira ou null (nesse caso o Count não conta a linha) quando for falsa.
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Dalto P. Blanco quarta-feira, 24 de julho de 2013 19:43
-
Não conheço o Access, não sei se vai funcionar, mas experimente dessa forma:
COUNT(iif([Presenças das Matrículas].[Status do Aluno] = 1, 1, null)) As Presença, COUNT(iif([Presenças das Matrículas].[Status do Aluno] = 2, 1, null)) As Falta,
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Dalto P. Blanco quarta-feira, 24 de julho de 2013 19:43