Ao executar esse select eu esperava que o resultado fosse apenas 1 registro, o registro que tem a maior data, mas o banco me retorna os 4 registros existentes e eu só quero o MAX.
O que eu entendi é que ele faz isso porque eu tenho l.ds_leito e ui.ds_unid_int no group by, mas como eu faço para ter apenas o ultimo registro de cada atendimento pela data?
select
max(mi.dt_mov_int) as dt_mov_int
,p.cd_paciente cd_paciente
,a.cd_atendimento cd_atendimento
,l.ds_leito ds_leito
,ui.ds_unid_int ds_unid_int
from atendime a
join paciente p on p.cd_paciente = a.cd_paciente
join mov_int mi on mi.cd_atendimento = a.cd_atendimento
join leito l on l.cd_leito = mi.cd_leito
join unid_int ui on ui.cd_unid_int = l.cd_unid_int
where a.dt_alta is null
and a.tp_atendimento = 'I'
and p.cd_paciente = '1774836'
group by p.cd_paciente
,a.cd_atendimento
,l.ds_leito
,ui.ds_unid_int
order by
dt_mov_int desc , cd_atendimento
Resultado:
| 28/09/2018 | 1774836 | 15 | 311-LEITO04 |
| 06/05/2018 | 1774836 | 15 | 311-LEITO01 |
| 04/05/2018 | 1774836 | 15 | 518-LEITO10 |
| 25/12/2017 | 1774836 | 15 | 311-LEITO04 |