2017-09-21 5 views
0

내 문제는 이것입니다 - 의사가 수행 한 의료 절차에 대한 적절한 환급액을 계산하기 위해 MS Access에서 데이터베이스/쿼리를 작성하려고합니다. 그것의 대부분은 "간단하다", 나는 하나의 기록 내에서 그것을 할 수 있다는 것을 의미한다. 하나의 특정한 청구 관행은 그렇지 않다.MS Access SQL (2010) - 계산 된 열을 기반으로 여러 레코드를 "빠르게"만드는 방법은 무엇입니까?

환자가 하루에 여러 차례 수술을받는 경우, "Multiple surgery reduction"이 적용됩니다. 수술은 가장 비싼 순서대로 순위가 매겨지며, 첫 번째 항목은 100 %로, 두 번째 항목은 50 %, 세 번째 및 그 이후의 수술은 25 %였다. 개별 기록에는 다중 수술이 수행되었음을 나타내는 지표는 없습니다.

프로 시저가 수술 일 때마다 다른 수술이 수행되었는지 확인하고 수술 목록에서 해당 프로 시저를 순위 지정하고 적절한 축소를 적용하는 쿼리를 작성하려고합니다.

하위 쿼리가이를 수행 할 수 있다고 생각했지만 현재 프로 시저 테이블에는 58 만 개의 레코드가 있고 커지기 때문에 실행 시간이 중요한 요소입니다. 순진한 가격 책정 쿼리로 최소 예제를 만들었습니다 : http://sqlfiddle.com/#!9/7254e/9. 분명히 모든 데이터는 HIPPA 법률에 따라 가상의 것입니다. 실제 상황은 분명히 그보다 훨씬 복잡하지만 분명히 내가 얽혀있는 특정 문제를 보여주기에 충분하다.

누구나 나에게 (단 하나의 쿼리 일 필요는 없지만) 훌륭한 방법 일 수 있다면. 읽어 주셔서 감사합니다!

답변

1

예제 데이터를 제공해 주셔서 감사합니다. 질문에 직접 표로 추가하는 것이 더 좋았을 것입니다.

데이터에 필요한 것은 각 환자의 수술 절차에 대한 일별 시퀀스 ID입니다. 쿼리에서 DCount() 도메인 집계를 생성 할 수는 있지만 대용량 데이터 세트에서는 쓸모가 없을 정도로 느려질 수 있습니다. 어떤 경우에는 테이블의 시퀀스 필드를 채우는 VBA 솔루션 만 사용할 수 있습니다.

고려해

에 Query1 : PatientsFees
ProcID, ProcList.Pat_Name, ProcList.Procedure, FeeList.Price, FeeList.Surgery, DateSerial (해 ([Date_Service AS SELECT FeeID AS FeeList.ID, ProcList.ID ([가격], "00000") & "_"& 형식 ([ProcList]. [ID], "00000") AS (날짜 (서비스)]), 월 ([Date_Service] PriceID FROM ProcList INNER JOIN FeeList ON ProcList.Procedure = FeeList.Procedure;

QUERY2 :
SELECT PatientsFees.Pat_Name, PatientsFees.DateSvs, PatientsFees.PriceID, PatientsFees.Procedure, PatientsFees.Price, PatientsFees.Surgery, DCOUNT ("*", "PatientsFees", "Pat_Name = '"& [ PatientsFees]. Pat_Name] & " '및 수술 = 1 AND DateSvs = #"& [PatientsFees]. DateSvs] & "# AND PriceID>'"& [PriceID] & " '") +하여 IIf ([외과] = (SurSeq) = 2,0.5, True, 0.25) AS Reimb 환자들로부터 환자 주문서 .Pat_Name, PatientsFees.DateSvs, PatientsFees.PriceID DESC;

관련 문제