我有一个包含以下列的表:patient_id,visit_id和visit_date。我怎样才能写出一个查询,以获得每个病人最近访问日期的max(visit_id)? (几个visit_id可能发生在同一天的同一患者)查询以获取最大记录数
基本上,我想最终没有重复的患者ID。
谢谢。
我有一个包含以下列的表:patient_id,visit_id和visit_date。我怎样才能写出一个查询,以获得每个病人最近访问日期的max(visit_id)? (几个visit_id可能发生在同一天的同一患者)查询以获取最大记录数
基本上,我想最终没有重复的患者ID。
谢谢。
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
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
只要使用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
既然你需要做的“最大”的两列,你需要的是子查询。我没有测试过以下查询,但它应该是这样的:
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
希望这会有所帮助。
你会用什么数据库? MSFT,MYSQL,PVS? – user404463 2010-09-08 17:43:34
我已经添加了“每个组最大的标签”。这个问题在Stack Overflow上已经被回答了几十次。 – 2010-09-08 17:58:45