我正在进行一项询问,以显示某些类型药物的患者.我有一份我正在寻找的几种不同药物的清单 - 我正在寻找数据库中是否有任何患者的处方,这些药物在今天或之后的日期或之后结束.
药物按名称出现在表格中,所以我试图找到它们LIKE.但是,一旦我添加了多个med,我的查询就会爆出大量的重复项(从362行返回到超过32K行),并WHERE在meds之后忽略我的子句中的所有项.
所以这就是我尝试过的:
select p.PatientID,
p.FirstName+' '+p.LastName as 'PatientName',
m.endDate,
m.Prescriber,
m.drugDescription as 'DrugName'
from Medications m
join Patients p on p.RCDID = m.PTID
where m.historyRecord = 'N'
and m.[current] = 'Y'
and m.drugDescription like 'Med1%'
or m.drugDescription like 'Med2%'
or m.drugDescription like 'Med3%'
and m.endDate >= GETDATE()
Run Code Online (Sandbox Code Playgroud)
这给了我超过30K的重复 - 并且重复的患者在该WHERE条款中不符合以下标准:
where m.historyRecord = 'N'
and m.[current] = 'Y'
and m.endDate >= GETDATE()
Run Code Online (Sandbox Code Playgroud)
(而这名患者实际上只出现在21行的数据库中 - 在21次不同的时间内开出Med2 - 所以它完全脱离了轨道)
我也尝试了一个子查询:
select p.PatientID,
p.FirstName+' …Run Code Online (Sandbox Code Playgroud)