- Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 18 anos, 10 meses atrás por Anônimo.
-
AutorPosts
-
22 de fevereiro de 2006 às 11:58 pm #75313toadpunkParticipante
Gente…tenho a seguinte query:
select distinct b.cd_disc,
b.nm_abrev,
(select sum(QT_QTDTOTAL)
from f_estat_geral_aproveitamento c
where c.aa_anomatr||c.ss_semematr = a.aa_anomatr||a.ss_semematr
and c.id_idtfdisc = b.cd_identdisc) total_de_alunos,
(select sum(QT_QTDTOTAL)
from f_estat_geral_aproveitamento c
where c.aa_anomatr||c.ss_semematr = a.aa_anomatr||a.ss_semematr
and c.id_idtfdisc = b.cd_identdisc
and c.cd_condaprv not in ('AP','SA')) Total_de_reprovados,
trunc(((select sum(QT_QTDTOTAL)
from f_estat_geral_aproveitamento c
where c.aa_anomatr||c.ss_semematr = a.aa_anomatr||a.ss_semematr
and c.id_idtfdisc = b.cd_identdisc
and c.cd_condaprv not in ('AP','SA'))
/
(select sum(QT_QTDTOTAL)
from f_estat_geral_aproveitamento c
where c.aa_anomatr||c.ss_semematr = a.aa_anomatr||a.ss_semematr
and c.id_idtfdisc = b.cd_identdisc))*100,2) Perc_de_reprovados
from f_estat_geral_aproveitamento a,f_departamento d,
f_disciplina b
where a.aa_anomatr||a.ss_semematr = 20052
and a.id_idtfdisc = b.cd_identdisc
and d.cd_dept = 'CI'
and a.cd_dept = d.cd_deptorder by b.cd_disc
Ele roda numa boa no Plus… mas não roda no Forms, dentro de um cursor, por exemplo!!
Q q eu estou fazendo de errado?
Abraços!
Toad23 de fevereiro de 2006 às 3:17 pm #75315toadpunkParticipanteDando uma fuçada aqui, percebi que pode ser problema na versão do Forms que eu uso: 😳 4.5 😳
A pergunta É: Como faço pra desmenbrar isso?[/b]24 de fevereiro de 2006 às 9:21 pm #75329AnônimoBom…tive que desmembrar a Query em três!
A primeira e principal, faz as consultas dos primeiros parâmetros, e informa um parâmetro às outras duas!
Ficou assim:
cursor X is
SELECT distinct
(b.cd_identdisc) B_IDENTIDISC,b.cd_disc,
(b.cd_disc||'#'||b.nm_abrev||'#' ) linha
FROM f_estat_geral_aproveitamento a,
f_Disciplina b,
f_departamento d
WHERE to_char(a.aa_anomatr)||to_char(a.ss_semematr) = :TXT_ANO||:TXT_SEM
AND a.id_idtfdisc = b.cd_identdisc
AND a.cd_dept = :CD_DEPT
AND a.cd_dept = d.cd_dept
order by b.cd_disc;CURSOR TOTAL_ALUNO(p_identdisc f_disciplina.cd_identdisc%Type) IS
select sum(c.QT_QTDTOTAL)
from f_estat_geral_aproveitamento c,f_departamento d,
f_disciplina b
where to_char(c.aa_anomatr)||to_char(c.ss_semematr) = :TXT_ANO||:TXT_SEM
and c.id_idtfdisc = b.cd_identdisc
and d.cd_dept = :CD_DEPT
and c.cd_dept = d.cd_dept
and b.cd_identdisc = p_identdisc;CURSOR REPROVADOS(p_identdisc f_disciplina.cd_identdisc%Type) IS
select sum(QT_QTDTOTAL)
from f_estat_geral_aproveitamento c,f_departamento d,
f_disciplina b
where to_char(c.aa_anomatr)||to_char(c.ss_semematr) = :TXT_ANO||:TXT_SEM
and c.id_idtfdisc = b.cd_identdisc
and c.cd_condaprv not in ('AP','SA')
and d.cd_dept = :CD_DEPT
and c.cd_dept = d.cd_dept
and b.cd_identdisc = p_identdisc;
Na hora de abrir dar um FETCH:
for r in x loopopen TOTAL_ALUNO(r.B_IDENTIDISC); fetch TOTAL_ALUNO into v_total_alunos; close Total_aluno; open REPROVADOS(r.B_IDENTIDISC); fetch REPROVADOS into v_total_REPROVA; close REPROVADOS;
end loop;
É isso aí!
Abraços!
Toad -
AutorPosts
- Você deve fazer login para responder a este tópico.