Dificuldade em utilizar função de grupo MAX com o EXISTS

Pessoal,

Estou tentando criar um script que me retorne, dentro de uma lista de docentes de pós-graduação, apenas o valor mais recente da matrícula(um docente pode ter mais de uma matrícula).
Estou tentando usar o EXISTS do SQL no Oracle, mas o banco está me informando que a função de grupo MAX não pode ser utilizada.
Segue, abaixo, o corpo da query

select distinct s.set_cod_setor, s.set_descricao, d.dot_docente, trim(hs.his_nome)
from docentes_turmas d, historico_servidores hs, programas_setores ps, sca.setores s, programas p
where exists (select d.dot_docente from historico_servidores hs1 where d.dot_docente = max(hs1.his_ser_matricula_siape)) ---> o erro ocorre aqui
and   d.dot_tipo_docente = 1
and  pst_set_cod_setor = hs.his_set_cod_setor
and  s.set_cod_setor = hs.his_set_cod_setor
and  p.prg_cod_programa = ps.pst_prg_cod_programa
group by s.set_cod_setor, s.set_descricao, d.dot_docente,trim(hs.his_nome)
order by s.set_cod_setor, trim(hs.his_nome)

Se não tiverem entendendo a minha dúvida, podem perguntar.
Agradece,

Max Carvalho

Você não pode utilizar o max(hs1.his_ser_matricula_siape)) dessa forma…
Vocês precisaria criar uma outra SubQuery… fazendo um select max(his_ser_matricula_siape) para então realizar a comparação…

Não tenho a certeza se funciona ai mas experimenta com having

... where exists (select d.dot_docente from historico_servidores hs1 having d.dot_docente = max(hs1.his_ser_matricula_siape)) ...

vc não pode usar funções de agregação (max, min, count etc) fora do select e do having.
Na verdade, vc nem precisa, SQL permite vc abstrair algumas coisas, exemplo:

vc pode fazer assim:

Select nome, max(nota)
from alunos
group by nome

em vez de assim:

Select nome, max(nota)
from alunos
where nota = max(nota)
group by nome

acredito q esse seja seu problema, é meio complicado dar sugestoes em sql pq em geral não conhecemos as tabelas nem as relações.
alias, SIAPE? É algo pro governo federal? hehehe :lol: