2011-12-06 104 views
0

我必須創建一個表,其中有很多列從一個表和兩個視圖中提取日期。顯示列是沒有問題的。當我必須給兩列分別顯示一位患者接受前兩位不同醫生(doctor_1和doctor_2)提供的服務時,問題纔會起作用。每位醫生都有自己的ID。我不確定我是否應該使用「獨特的頂部(2)」,「排名」等等......這就是它的樣子。如何顯示第一個和第二個醫生看病人?

日期,姓氏,名字,地址,城市,州,郵編,Hostital室,Doctor_1,Doctor_2

任何幫助將不勝感激。

+0

什麼?我不明白你在問什麼,你是說你沒有足夠的列來存儲所有的數據,如果是這樣,增加更多的列 – 2011-12-06 23:28:40

+0

不,我不是那麼說。我不確定如何添加醫生看到病人的第一次和第二次。 Doctor_1和Doctor_2列將使用看到病人的兩個不同醫生ID創建。我如何獲得每位醫生的日期,並將他們的ID先列出(doctor_1)和second(doctor_2),並且對所有其他患者重複所有這些日期? – user1084523

+0

對不起,我不知道。 – 2011-12-07 11:49:26

回答

0

讓我們假設你的表看起來如下:

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功能可能會有更好的方法來完成這項工作,但這應該會讓你繼續前進。我希望這是你正在尋找的答案!

相關問題