GARANTIR DESCONTO

Fórum Consulta do Access no Firebird #49018

27/01/2005

0

Gostaria de saber se é possível criar uma consulta no Firebird semelhante a Consulta Tabela de Referência Cruzada existente no Access. Eu sei que posso obter o que desejo via SP, mas queria tentar fazer isso numa só cláusula SQL. Para quem não sabe o que é esse tipo de consulta, vai um exemplo:

Suponha uma tabela de matrículas com os dados: NomeAluno, Série e Sexo. É necessário fazer uma contagem do nº de alunos por série e sexo. Num SQL normal ficaria assim:

Série     Sexo Total
1ª Série   M     12
1ª Série   F     18
2ª Série   M     16
2ª Série   F     14


Mas eu precisaria assim:

Série     TotalM TotalF
1ª Série    12      18
2ª Série    16      14


Alguém já conseguiu fazer isso?


Gandalf.nho

Gandalf.nho

Responder

Posts

28/01/2005

Nandolh

select
t.serie
sum(case
when t.sexo = ´M´ then 1
else 0
end) as TotalM,
sum(case
when t.sexo = ´F´ then 1
else 0
end) as TotalF


from turma t


Responder

Gostei + 0

28/01/2005

Gandalf.nho

Valeu pela ajuda, não sabia que poderia usar o CASE assim, dentro de uma função como o SUM.


Responder

Gostei + 0

28/01/2005

Gandalf.nho

Implantei a solução que você me deu e funcionou direitinho, mesmo a consulta sendo mais complicada que esse exemplo básico que usei. Valeu mesmo.
A propósito, achei outra solução para o problema, que usa UDF, o que seria adequada para quem usa IB 6 ou FB 1.0 que não possui o CASE. Para quem queira usar a solução com UDF, segue o link abaixo:
[url]http://www.comunidade-firebird.org/modules.php?name=Downloads&d_op=getit&lid=92[/url]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar