如何显示第一个和第二个医生看病人?

时间:2011-12-06 23:18:52

标签: sql-server-2008

我必须创建一个表,其中有很多列从一个表和两个视图中提取日期。显示列是没有问题的。当我不得不使用两列来显示从前两位不同医生(doctor_1和doctor_2)接受服务的患者时,问题就会发挥作用。每位医生都有自己的身份证。我不确定我是否应该使用“不同的顶部(2)”,“等级”等......这就是它的样子。

日期,姓氏,名字,地址,城市,州,邮编,主机,房间,Doctor_1,Doctor_2

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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功能可能有更好的方法来实现这一点,但这应该让你滚动。我希望这是您正在寻找的答案!