2017-01-06 3 views
0

이것은 간단한 질문입니다 만, 나의 딜레마는 1,000 개 이상의 의료 진단 코드를 전체 ICD9 테이블과 비교하는 것입니다.와일드 카드 값을 테이블로 비교하십시오.

전체 데이터베이스와 비교할 잘린 코드 목록이 있습니다. 예를 들어 코드 010을 잘라 냈지만 전체 ICD9 데이터베이스 테이블은 010.01, 010.02, ... 010.96이며 010 * 내의 모든 값을 반환해야합니다.

내가 사용하고있는 잘린 코드 목록은 가변적이며 800-1300 + 와일드 카드 코드가 포함되어 있으며 액세스에는 쿼리에 40 개의 변수 제한이 있습니다.

나는 this help topic을 찾았지만 내 요구 사항으로 변환하는 방법을 이해하지 못했습니다. 아래는 현재 설정이있는 내 쿼리에 대한 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*")); 

답변

0

이 수행해야합니다

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]) 
+0

감사 구스타프! 내 목표는 나보다 먼저 들어온 사람들이 내가 한 일을 이해할 수있게하는 것이다. 나는 당신의 방법이 훨씬 더 좋고 효과가 있었지만! 필자는 Find-> Replace for the Decimal Point -> blank를 수행 한 후 다음과 같은 내용으로 바꾸었다. SELECT [코드 목록]. [진단 코드], [ICD9-10 코드 일치] .Match FROM [ICD9- 10 코드 매치] INNER JOIN [코드 목록] ON [ICD9-10 코드 매치]. [코드 목록]과 유사합니다. [진단 코드]; InStr 수식에 익숙하지 않은 사용자에게는 적절하고 쉽게 작동하는 것으로 보입니다. – jeffrey406

+0

브레인 버스터 (brain buster)가있을 때 나는 그것을 싫어하고 그 해결책은 아주 간단합니다! 로드 블록을 넘겨 줘서 고마워. – jeffrey406

+0

당신은 오신 것을 환영합니다! – Gustav