Preciso de uma pequena ajuda.

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jiopra
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Seg, 29 Ago 2016 11:10 am

Boa tarde pessoal,

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

sql:

Selecionar tudo

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
Anexos
Resultado do sql acima
Resultado do sql acima
souldeath
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qua, 25 Ago 2010 9:39 am
Localização: Limeira

Olá jiopra, veja se funciona dessa forma:

Selecionar tudo

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
jiopra
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 13
Registrado em: Seg, 29 Ago 2016 11:10 am

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


valeuu abração você é demais
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes