这本身就是一个简单的问题,但我的困境是我将1,000+医疗诊断代码与整个ICD9表进行比较。
我有一个截断代码列表,可以与整个数据库进行比较。例如,我截断了代码 010,但整个 ICD9 数据库表有 010.01、010.02、....010.96 并应返回 010* 内的所有值。
我正在使用的截断代码列表是可变的,包含 800-1,300+ 通配符代码,Access 在查询中有 40 个变量限制。
我找到了这个帮助主题,但不明白如何将其转换为我的需求。下面是我目前设置的查询的 SQL,但已将其缩短为仅几个要搜索的值。如果有一种方法可以将通配符代码放入自己的表中并连接到 ICD9 表,那就太好了......但是我的专业知识无法知道如何使用另一个表来搜索通配符。
SELECT [ICD9-10 Code Match].[ICD9 Code]
FROM [ICD9-10 Code Match]
WHERE ((([ICD9-10 Code Match].[ICD9 Code]) Like "010*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "011*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "012*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "013*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "014*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "015*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "016*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "017*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "018*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "042*" Or ([ICD9-10 Code Match].[ICD9 Code]) Like "0100*"));
这应该可以:
SELECT [ICD9-10 Code Match].[ICD9 Code]
FROM [ICD9-10 Code Match]
WHERE [ICD9-10 Code Match].[ICD9 Code] IN
(Select Left([Code], InStr([Code], ".") - 1) From [ICD9])