讓我們假設你的表看起來如下:
doctor_patients:
doctor_id int,
patient_id int,
visit_date datetime
在這種情況下,你可以寫類似以下的查詢:
select a.patient_id, b.doctor_id as doctor_1, b.visit_time_max as doctor_1_visit_time, a.doctor_id as doctor_2, max(a.visit_time) as doctor_2_visit_time
from doctor_patients a
inner join
(select patient_id, doctor_id, max(visit_time) as visit_time_max
from doctor_patients
where visit_time < a.visit_time
and patient_id = a.patient_id
and doctor_id = a.doctor_id) b
你總是可以把一個where子句在尾部結束並將過濾器應用於「a」表。我不確定此查詢是否會按原樣運行,因爲我沒有在SQL上進行嘗試。但我希望這給你一個關於你需要做什麼的總體思路。使用最新的SQL功能可能會有更好的方法來完成這項工作,但這應該會讓你繼續前進。我希望這是你正在尋找的答案!
什麼?我不明白你在問什麼,你是說你沒有足夠的列來存儲所有的數據,如果是這樣,增加更多的列 – 2011-12-06 23:28:40
不,我不是那麼說。我不確定如何添加醫生看到病人的第一次和第二次。 Doctor_1和Doctor_2列將使用看到病人的兩個不同醫生ID創建。我如何獲得每位醫生的日期,並將他們的ID先列出(doctor_1)和second(doctor_2),並且對所有其他患者重複所有這些日期? – user1084523
對不起,我不知道。 – 2011-12-07 11:49:26