Consulta do Access no Firebird
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:
Mas eu precisaria assim:
Alguém já conseguiu fazer isso?
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
Curtidas 0
Respostas
Nandolh
27/01/2005
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
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
GOSTEI 0
Gandalf.nho
27/01/2005
Valeu pela ajuda, não sabia que poderia usar o CASE assim, dentro de uma função como o SUM.
GOSTEI 0
Gandalf.nho
27/01/2005
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]
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]
GOSTEI 0