我有一个包含以下列的表:patient_id,visit_id和visit_date。如何编写查询以获取每位患者最近访问日期的最大值(visit_id)? (同一患者可能在同一天发生几次visit_id)
基本上,我想最终没有重复的患者ID。感谢。
答案 0 :(得分:2)
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
答案 1 :(得分:2)
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 :(得分:0)
只需使用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
答案 3 :(得分:0)
由于您需要在两列上执行'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
希望这有帮助。