[firebase-br] É possível usar o COUNT com uma condição específica?

Tecnobyte Informática temp2 em tecnobyte.com.br
Ter Set 16 08:47:42 -03 2008


Veja se isto resolve. Caso esteja usando uma versão mais antiga do FB, 
troque a função IIF por CASE.

SELECT
  Tabela1.Nome,
  SUM(IIF(Tabela2.Status = 0, 1, 0)) AS QtdZero,
  SUM(IIF(Tabela2.Status = 1, 1, 0)) AS QtdUm,
  SUM(IIF(Tabela2.Status = 2, 1, 0)) AS QtdDois
FROM Tabela1
JOIN Tabela2 ON Tabela2.Tabela1_Id = Tabela1.Id
GROUP BY Tabela1.Nome

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br

----- Original Message ----- 
From: "Giovani Rochê" <giovaniroche em msn.com>
To: <lista em firebase.com.br>
Sent: Tuesday, September 16, 2008 7:20 AM
Subject: [firebase-br] É possível usar o COUNT com uma condição específica?



Bom dia a todos!

Estou fazendo uma consulta que deve me retornar o total de alunos por turma
de acordo com o status dos mesmos. Por exemplo, na msm consulta eu preciso
do total de alunos com o STATUS = 0 e STATUS = 2. Fiz esse select:

SELECT T.NOME,COUNT(A.CODIGO) AS TOTAL,T.TIPO
FROM ALUNOS A,TURMA T,MATRICULA M
WHERE M.COD_ALUNO = A.CODIGO AND M.COD_TURMA = T.CODIGO
AND M.COD_TIPO_MATRICULA = 0
AND M.COD_DISCIPLINA IN (SELECT MAX(COD_DISCIPLINA) FROM GRADE WHERE 
COD_TURMA = M.COD_TURMA)
AND A.STATUS <> 1
AND M.ANO = '2008'
GROUP BY T.NOME,T.TIPO

Com esse select consegui o total de alunos "somando" o STATUS 0 e 2 (o BD so 
aceita 0,1 e 2).
eu queria um select que me agrupasse o total do STATUS 0 e o total do STATUS 
2 na mesma
consulta. Pensei em fazer algo do tipo: SELECT COUNT(A.STATUS) WHERE 
A.STATUS = 2 mas não deu boa. Se alguem puder me ajudar agradeço.


Obrigado.





Mais detalhes sobre a lista de discussão lista