【发布时间】:2014-02-18 17:18:16
【问题描述】:
背景
我有两张桌子:
drugDistributionHistory - 详细说明向患者分发药物的时间/时间。
drugPrices - 药品价格。
对于这个例子,我正在研究一种名为“氟西汀”的药物,也称为“百忧解”。
如果我在drugPrices 表中查询这种药物,我会得到以下结果:
SELECT
drugName,
drugBrandName,
drugStrength,
drugDosage,
drugPrice
FROM
drugPrices
WHERE
drugName like '%fluoxetine%'
结果:
FLUOXETINE PROZAC 10MG CAP 0.02
FLUOXETINE PROZAC 20MG CAP 0.05
在我的drugDistributionHistory 表中,我正在寻找这种相同类型的药物,但是输入的药物可能不同,例如:
select
drugName,
strength,
measurement
from
drugDistributionHistory ddh
INNER JOIN facilities f ON ddh.facilityId = f.facilityId
where
f.facilityId = 40
AND ddh.resultCode = 'Received'
AND MONTH(dateGiven) = '01'
AND YEAR(dateGiven) = '2014'
and ddh.drugName like 'fluoxetine%'
按顺序 ddh.drugName
结果:
Fluoxetine / Prozac 60.00 mg
Fluoxetine / Prozac 20.00 mg
问题
我尝试将药物与其价格匹配的查询如下所示。我正在尝试匹配drugName 或drugBrandName(即:百忧解是氟西汀的品牌药物):
select
drugName,
strength,
measurement
from
drugDistributionHistory ddh
INNER JOIN facilities f ON ddh.facilityId = f.facilityId
INNER JOIN drugPrices dp ON
('%' + dp.drugName + '%' like '%' + ddh.drugName + '%'
OR '%' + dp.drugBrandName + '%' like '%' + ddh.drugName + '%')
where
f.facilityId = 40
AND ddh.resultCode = 'Received'
AND MONTH(dateGiven) = '01'
AND YEAR(dateGiven) = '2014'
and ddh.drugName like 'fluoxetine%'
order by
ddh.drugName
没有找到结果。
我是否误解了在加入表格时如何使用通配符?
【问题讨论】:
-
我认为最大的误解是您认为这是个好主意。你为什么不加入药物 ID?
-
不幸的是,数据来自两个完全不同的系统,我唯一能加入的就是药物的名称。
标签: sql sql-server join wildcard