【发布时间】:2016-08-15 18:45:33
【问题描述】:
在下文中,我们将挑选所有看过医生的患者,但我们从中删除了 4 名医生,因为他们不再在我们的设施中。这里的问题是,如果患者只看过这 4 位医生,他们将不会被选中。事实上,我们想将它们分配给b.Appt_resource_id = 142。我怎么能把这样的病人也包括在内?我们从这个 sql 得到的数据是这样的:
110811 737470 Mirta AVostaquishpe 19
102028 664770 Brune Alexgdre 19
70038 361830 Pala Avtila 19
44684 112740 Nani Verez 19
71939 382620 Alex Voachim 19
您可以看到每个患者都通过这个 b.Appt_Resource_ID 分配给了一个医生。但这排除了那些只看过现在离开设施的 4 位医生的病人。如何包含它们并将它们分配给 b.appt_resource_id= 142。
SELECT DISTINCT
A.Patient_id,
P.Patient_name,
P.Patient_Last_Name,
A.Patient_number,
b.Appt_resource_id,
b.appt_resource_descr
FROM
[PM].[vwGenPatApptInfo] A
INNER JOIN
(
SELECT TOP 100 PERCENT
patient_id,
Appt_resource_id,
appt_resource_descr,
COUNT(Appt_resource_id) AS DR_count,
ROW_NUMBER() OVER (PARTITION BY patient_id ORDER BY COUNT(*) DESC) AS seqnum
FROM
[PM].[vwGenPatApptInfo]
WHERE
Patient_ID IS NOT NULL AND
Appt_Sched_Department_ID = 2 AND
Appt_resource_id not IN (115, 123, 94, 109)
GROUP BY
patient_id,
Appt_resource_id,
appt_resource_descr
ORDER BY
patient_id,
seqnum
) B
ON B.Patient_ID = A.Patient_ID
AND B.seqnum = 1
INNER JOIN
[PM].[vwGenPatInfo] P
ON A.Patient_id = P.Patient_id
WHERE
A.Appt_Cancelled_Date IS NULL AND
A.Appt_Noshow_date IS NULL
【问题讨论】:
-
请提供一些示例数据,说明数据是如何出现的以及期望的行为
标签: sql sql-server