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

 



Responder a