Se a versão for superior 9i, vc pode usar a instrução "CASE". ----- Original Message ----- From: ABSFox To: Grupos-Oracle-br Sent: Tuesday, August 29, 2006 11:29 AM Subject: [oracle_br] : Otimizando consulta
Olá, confrades! Tenho a seguinte questão: há uma tabela de disciplinas, com o nome da disciplina, a avaliação - primeira, segunda, terceira, etc. -, e a nota do aluno: +------------+-----------+-------+ | disciplina | avaliacao | nota | +------------+-----------+-------+ | biologia | 1 | 4.00 | | biologia | 2 | 1.00 | | biologia | 3 | 2.00 | | filosofia | 1 | 4.00 | | filosofia | 2 | 5.00 | | filosofia | 3 | 2.00 | | física | 1 | 6.00 | | física | 2 | 3.00 | | física | 3 | 9.00 | | geografia | 1 | 7.00 | | geografia | 2 | 4.00 | | geografia | 3 | 5.00 | | história | 1 | 7.00 | | história | 2 | 6.00 | | história | 3 | 9.00 | | matemática | 1 | 7.00 | | matemática | 2 | 4.00 | | matemática | 3 | 5.00 | | química | 1 | 2.00 | | química | 2 | 3.00 | | química | 3 | 6.00 | | sociologia | 1 | 10.00 | | sociologia | 2 | 7.00 | | sociologia | 3 | 7.00 | +------------+-----------+-------+ Quero obter o resultado a seguir: +------------+-----------+----------+---------+ | disciplina | 1a. nota | 2a. nota | 3a.nota | +------------+-----------+----------+---------+ | biologia | 4.00 | 1.00 | 2.00 | | filosofia | 4.00 | 5.00 | 2.00 | | física | 6.00 | 3.00 | 9.00 | | geografia | 7.00 | 4.00 | 5.00 | | história | 7.00 | 6.00 | 9.00 | | matemática | 7.00 | 4.00 | 5.00 | | química | 2.00 | 3.00 | 6.00 | | sociologia | 10.00 | 7.00 | 7.00 | +------------+-----------+----------+---------+ Para isso, utilizo os comandos: select a.disciplina, b.nota as '1a. nota', c.nota as '2a. nota', d.nota as '3a. nota' from (select disciplina from _boletim) a, (select disciplina, nota from _boletim where avaliacao = 1) b, (select disciplina, nota from _boletim where avaliacao = 2) c, (select disciplina, nota from _boletim where avaliacao = 3) d where a.disciplina = b.disciplina and a.disciplina = c.disciplina and a.disciplina = d.disciplina group by disciplina; O problema é que em alguns testes essa consulta demorou muito para me trazer os resultados. Gostaria de saber se alguém aqui conhece uma outra forma de trazer o mesmo resultado em um tempo menor. Grato. Itamar. [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ OPORTUNIDADES DE TRABALHO, VAGAS, EMPREGOS PARA PROFISSIONAIS ORACLE VISITE: http://www.oraclebr.com.br/ __________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html