我有一個包含以下列的表: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