- Este tópico contém 10 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 11 meses atrás por
Ishii.
-
AutorPosts
-
19 de setembro de 2008 às 5:14 pm #82751
alcampagnani
ParticipanteGalera, tenho 3 consultas que preciso que funcionem, para fins acadêmicos.
select D.nom_dentista, SUM(val_pagamento) as “pagto”,
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
group by D.num_dentista
having pagto > 2500select D.nom_dentista , SUM(val_pagamento) “pagto”,
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2007-12-01’ and ‘2008-12-31’
group by D.num_dentista
having pagto > 2500
UNION
select D.nom_dentista , SUM(val_pagamento) pagto
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2007-12-01’ and ‘2008-12-31’
group by D.num_dentista
having SUM(val_pagamento) > 2500select D.nom_dentista, SUM(val_pagamento) as “pagto”,
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2007-12-01’ and ‘2008-12-31’
and D.num_dentista in (
select D.num_dentista
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2007-02-01’ and ‘2008-02-28’
group by D.num_dentista
having SUM(val_pagamento) > 2500)
group by D.num_dentista
having SUM(val_pagamento) > 2500TODOS OS TRÊS APRESENTAM A MENSAGEM: ORA-00936: expressão não encontrada.
Alguém Poderia Me Ajudar?
19 de setembro de 2008 às 6:17 pm #82759Ishii
ParticipanteOlá,
Em todas as três expressões há uma vírgula antes da palavra from e com isso o parse fica esperando outra coluna…
[]s Ishii
19 de setembro de 2008 às 6:22 pm #82762alcampagnani
ParticipanteEssa virgula eu coloquei agora, não tinha mesmo.
Agora apresenta essa mensagem ORA-00904: “PAGTO”: identificador inválido
19 de setembro de 2008 às 6:26 pm #82763Ishii
ParticipanteOlá,
Não havia notado… nas expressões de agrupamento, ordenação etc. você tem que utilizar a expressão correta e não o alias dela..
Tente com SUM(val_pagamento) em vez de pagto (alias)
[]s Ishii
19 de setembro de 2008 às 6:55 pm #82765alcampagnani
Participanteselect D.nom_dentista, SUM(val_pagamento) as “pagto”,
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
group by D.num_dentista
having pagto > 2500não entendi, desculpe sou meio leigo em sql.[/b]
19 de setembro de 2008 às 7:00 pm #82767alcampagnani
Participanteselect D.nom_dentista, SUM(val_pagamento) as “pagto”,
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
group by D.num_dentista
//Aqui é o agrupamento por número do dentista.
having pagto > 2500
// Se eu mudo da forma que falou aqui, aparece a mensagem: ORA-00979: não é uma expressão GROUP BYnão entendi, desculpe sou meio leigo em sql.
19 de setembro de 2008 às 7:11 pm #82768Ishii
Participante[quote=”alcampagnani”:d0urmd4k]select D.nom_dentista, SUM(val_pagamento) as “pagto”,
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between ‘2008-01-01’ and ‘2008-02-28’
group by D.num_dentista
//Aqui é o agrupamento por número do dentista.
having pagto > 2500
// Se eu mudo da forma que falou aqui, aparece a mensagem: ORA-00979: não é uma expressão GROUP BYnão entendi, desculpe sou meio leigo em sql.[/quote]
Deixe assim:
MensagemEnviada: 2008-09-19, 11:55:05 Assunto:
select D.nom_dentista, SUM(val_pagamento) as "pagto",
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between '2008-01-01' and '2008-02-28'
group by D.num_dentista
having SUM(val_pagamento) > 2500[]s Ishii
19 de setembro de 2008 às 7:40 pm #82769alcampagnani
Participanteselect D.nom_dentista, SUM(val_pagamento) as "pagto",
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between '2008-01-01' and '2008-02-28'
group by D.num_dentista
having SUM(val_pagamento)> 2500ORA-00936: expressão não encontrada
19 de setembro de 2008 às 8:33 pm #82771Ishii
ParticipanteOlá,
Desculpe-me esqueci de remover a vírgula…
select D.nom_dentista, SUM(val_pagamento) as "pagto"
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between '2008-01-01' and '2008-02-28'
group by D.num_dentista
having SUM(val_pagamento)> 2500[]s Ishii
19 de setembro de 2008 às 10:03 pm #82772alcampagnani
Participanteagora temos:
ORA-00979: não é uma expressão GROUP BY
19 de setembro de 2008 às 11:09 pm #82778Ishii
ParticipanteTente
select D.nom_dentista, SUM(val_pagamento) as "pagto"
from dentista D, Pagamento PG, consulta C
where C.num_dentista = D.num_dentista
and PG.num_consulta = C.num_consulta
and C.dat_consulta between '2008-01-01' and '2008-02-28'
group by D.nom_dentista
having SUM(val_pagamento)> 2500Não sei se num_dentista ou nom_dentista…
[]s Ishii
-
AutorPosts
- Você deve fazer login para responder a este tópico.