Запрос, чтобы получить максимум из максимальных записей - PullRequest
0 голосов
/ 08 сентября 2010

У меня есть таблица со следующими столбцами: Patient_id, visit_id и visit_date. Как я могу написать запрос, чтобы получить максимум (visit_id) на самую последнюю дату посещения для каждого пациента? (несколько посещений могут происходить в один день для одного и того же пациента)

По сути, я хочу, чтобы у меня не было дубликатов идентификаторов пациентов.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 08 сентября 2010
select t.patient_id, max(t.visit_id)  
  from (select t.patient_id, max(t.visit_date) maxdate
          from table t
         group by t.patient_id) tt, table t
where t.patient_id = tt.patient_id
  and t.visit_date = tt.maxdate
group by t.patient_id 
2 голосов
/ 08 сентября 2010
select patient_id, max(t.visit_id) from 
table t inner join ( 
    select patiend_id, max(visit_date) as latest_visit 
    from table 
    group by patient_id
) lv on 
t.patient_id = lv.patientID and t.visit_date = lv.latest_visit
group by t.patient_id
0 голосов
/ 08 сентября 2010

Так как вам нужно сделать 'max' для двух столбцов, вам нужны подзапросы.Я не проверял следующий запрос, но он должен выглядеть примерно так:

SELECT patient_id, MAX(visit_id) AS maxvisit, maxdate
FROM (
    SELECT patient_id, visit_id, MAX(visit_date) AS maxdate
    FROM mytable
    GROUP BY patient_id, visit_id
) t
GROUP BY patient_id, maxdate

Надеюсь, это поможет.

0 голосов
/ 08 сентября 2010

Просто используйте GROUP BY и вложенный выбор.

SELECT patient_id, visit_date, max(visit_id)
FROM tbl
JOIN (
  SELECT patient_id, max(visit_date) FROM tbl GROUP by patient_id
) AS t
  USING ( patient_id, visit_date )
GROUP BY patient_id, visit_date
...