preciso de uma ajuda em um sql que fiz, é um sql envolvendo números de prontuários, um dos prontuários retornou 8 vezes mudando o medico responsavel (está certo) porém quero que pegue apenas o ultimo resultado dessas 8 linhas que me retorne somente 1
SELECT
'Prontuário: ' || b.nr_prontuario ||
' Paciente: ' || b.nm_pessoa_fisica ||
' Médico Resp.: '||substr(obter_nome_pf(f.cd_medico_resp),1,50) nm_medico,
' Data da Solicitação de Cópia: '
||To_Char(a.dt_alerta,'dd/mm/yyyy hh24:mi:ss')||
chr(13)
FROM alerta_paciente a,
pessoa_fisica b,
atendimento_paciente f
WHERE a.cd_pessoa_fisica = b.cd_pessoa_fisica
and b.cd_pessoa_fisica = f.cd_pessoa_fisica
AND To_date(a.dt_alerta) = trunc(SYSDATE)
AND a.nr_seq_tipo_alerta = 1
AND b.cd_estabelecimento = 1
order BY a.cd_pessoa_fisica
SELECT
'Prontuário: ' || x.nr_prontuario ||
' Paciente: ' || x.nm_pessoa_fisica ||
' Médico Resp.: ' ||substr(obter_nome_pf(x.cd_medico_resp),1,50) nm_medico,
' Data da Solicitação de Cópia: ' || To_Char(y.dt_alerta,'dd/mm/yyyy hh24:mi:ss') || chr(13)
from
(select b.cd_pessoa_fisica,
b.nr_prontuario,
b.nm_pessoa_fisica,
rank () over (partition by b.nr_prontuario order by f.id_atendimento desc) as rnk,
f.cd_medico_resp
from pessoa_fisica b,
atendimento_paciente f
where b.cd_pessoa_fisica = f.cd_pessoa_fisica AND
b.cd_estabelecimento = 1) x,
(select a.cd_pessoa_fisica,
a.dt_alerta
from alerta_paciente a
where To_date(a.dt_alerta) = trunc(SYSDATE) AND
a.nr_seq_tipo_alerta = 1) y
where x.rnk = 1 AND
x.cd_pessoa_fisica = y.cd_pessoa_fisica
Manooooo se é loco, rodou lisinho, só tive q mudar o f.id_atendimento pelo f.nr_atendimento, tudo certo cara valeu mesmo, a query ta demorando uns 6 segundos pra rodar mas ta top