Contar valores idênticos em colunas diferentes, mas na mesma linha
Pessoal boa tarde a todos,
Preciso contar valores idênticos em colunas diferentes, mas na mesma linha, alguém sabe como fazer isso?
Explicação (motivo)
Criar um relatório para um projeto social de uma ONG que deveria contar os dentes cariados, ausentes e hígidos (bons) de alunos carentes de escolas publicas. Na tabela do banco que guarda a situação dos dentes tenho uma coluna id e uma coluna para cada dente (dente1, dente2) e os valores destas colunas podem ser C, A ou H. Como mostra a imagem:
/applications/core/interface/imageproxy/imageproxy.php?img=http://dupomar.com.br/WebContent/images/dentes.jpg&key=bde01ad8ef1edbac87116ffa821c1bd204dca536b24935363c81f219a312a563" alt="dentes.jpg" />
Eu preciso no relatório contar quantos dentes cariados, ausentes e higidos de cada aluno separadamente. Tentei fazer um count com case:
Count(Case When MO_FICHA_SITUACAO.fcs_11 = 'A' Then 'ausente'
When MO_FICHA_SITUACAO.fcs_12 = 'A' Then 'ausente'
End) As ausente,
Mas não deu retorna sempre o valor 1. Tentei também um subselect mas ai retorna a soma de todas os alunos ao invés de me retornar a soma só de um aluno
SQL
Select
(select COUNT(MO_FICHA_SITUACAO.fcs_11)+COUNT(MO_FICHA_SITUACAO.fcs_12)+COUNT(MO_FICHA_SITUACAO.fcs_13)+COUNT(MO_FICHA_SITUACAO.fcs_14) from MO_FICHA_SITUACAO where MO_FICHA_SITUACAO.fcs_11='H' OR MO_FICHA_SITUACAO.fcs_12='H' OR MO_FICHA_SITUACAO.fcs_13='H' OR MO_FICHA_SITUACAO.fcs_14='H') As higido,
(select COUNT(MO_FICHA_SITUACAO.fcs_11)+COUNT(MO_FICHA_SITUACAO.fcs_12)+COUNT(MO_FICHA_SITUACAO.fcs_13)+COUNT(MO_FICHA_SITUACAO.fcs_14) from MO_FICHA_SITUACAO where MO_FICHA_SITUACAO.fcs_11='C' OR MO_FICHA_SITUACAO.fcs_12='C' OR MO_FICHA_SITUACAO.fcs_13='C' OR MO_FICHA_SITUACAO.fcs_14='C') As cariado,
MO_ESCOLA.ID,
MO_ESCOLA.NOME,
MO_ALUNO.ID,
MO_ALUNO.NOME,
From
MO_FICHA_SITUACAO, MO_ESCOLA, MO_ALUNO
WHERE MO_FICHA_SITUACAO.ALUNO_ID=MO_ALUNO.ID AND MO_ALUNO.ID_ESCOLA=MO_ESCOLA.ID
Desde já agradeço :thumbsup:
Discussão (1)
Carregando comentários...