0

在此处输入图像描述

我在 tblVisits 中有一个名为“tobacco”的属性。tblICD 是医疗代码列表,icd_jxn 是连接表。tblICD.Descript 是医疗代码 (ICD_ID) 的文本描述。我正在尝试查看是否有人NOT在其医疗代码列表中确实具有字符串“烟草”的人将其bit“烟草”属性设置为 1。下面的查询是我最好的猜测,但它不正确。

SELECT tblVisits.kha_id, tblVisits.tobacco from tblvisits
WHERE NOT EXISTS (SELECT icd_jxn.kha_id, icd_jxn.icd_fk, tblICD.icd_id, tblICD.Descrip
                   FROM icd_jxn inner join 
                        tblICD on icd_jxn.icd_fk = tblicd.icd_id
                       WHERE (tblicd.descrip like N'%tobacco%') AND (tblVisits.kha_id = icd_jxn.kha_id) and (tblvisits.tobacco=1))
4

2 回答 2

1

没有保证的情况

select v.kha_id, v.tobacco
from tblvisits v
where v.tobacco = 1
and not exists (select null from icd_jxn j
     inner join tblICD i on j.icd_ICD_FK= i.IDC_ID
     where j.KHA_ID = v.KHA_ID
     and i.Descrip like N'%tobacco%');
于 2012-05-08T18:36:59.007 回答
1

如果您将其视为对患者的总结,则此查询似乎更简单。患者是否设置了烟草属性?专利的描述中是否包含烟草?

以下查询使用此逻辑:

select *
from (select tv.kha_id, tv.tobacco,
             MAX(case when charindex(N'tobacco', ticd.descrip) > 1 then 1 else 0 end) as tobacco_description,
      from tblvisits tv join
           icd_jxn jxn
           on tv.kha_id = jxn.kha_id join
           tblICD ticd
           on jxn.icd_fk = ticd.icd_fx
      group by tv.kha_id, tv.tobacco
     ) t
where tobacco_description = 1 and tobacco_description = 0

子查询汇总患者级别的数据。您可以通过添加适当的“有”子句来消除它。但是,我发现子查询更具可读性,并且应该具有相同的性能。此外,它还可以计算烟草、钻头和烟草描述的所有不同组合。

最后,我将“like”替换为“charindex”,因为后者效率更高。

于 2012-05-08T18:42:11.777 回答