我有3张桌子:
医生:
staff_no - doctor_name
50 - smith
100 - jones
150 - blogs
处方:
pre_no - staff_no - patient_id - start_date
100 - 50 - 10 - 01/01/2008
101 - 100 - 11 - 02/02/2009
102 - 150 - 12 - 03/03/2008
治疗:
staff_no - patient_id - start_date
50 - 10 - 01/01/2008
100 - 11 - 01/02/2009
150 - 12 - 02/03/2008
我想要实现的是一个表格如下所示,具有以下条件,显示有多少人在2009年期间使用AS关键字生成最后2列的治疗和处方
staff_no - doctor_name - number_of_patients_treated - number of prescriptions_issued
100 - Jones - 1 - 1
只有琼斯在2009年内发放了两种治疗药物和药物,并且他已经在第一次发生这种情况。
到目前为止,我已经提出了以下内容,但是无法想到如何将治疗和处方的日期结合起来,我也会在那里得到带有计数条件的语法错误。任何帮助都会非常感激,谢谢。
select
d.staff_no, doctor_name,
Count(t.patient_id) as number_of_different_patients_treated
from
doctor d
LEFT OUTER JOIN
treatment t on d.staff_no = t.staff_no
WHERE
t.start_date LIKE '%2009%'
答案 0 :(得分:0)
试试这个:
select
d.staff_no,
d.doctor_name,
Count(distinct t.patient_id) as [number_of_different_patients_treated],
Count(p.patient_id) as [number of prescriptions_issued]
from doctor d
LEFT OUTER JOIN
treatment t
on d.staff_no = t.staff_no
and year(t.start_date) = 2009
LEFT OUTER JOIN
Prescription p
on d.staff_no = p.staff_no
and year(p.start_date) = 2009
where p.staff_no is not null or t.staff_no is not null
group by d.staff_no, d.doctor_name
order by d.doctor_name
您可以使用LIKE'%2009'如果它真的是一个字符串(它不应该是。)或者如果它是一个日期,而不是使用year()你可以使用
t.start_date between '1/1/2009' and '12/31/2009 23:59'
不确定您是否想要独特的患者(不同)?如果没有,只需删除" distinct"。