기초 쿼리책 읽어보고 연습문제(?) 풀고 있습니다.
근데 잘 안되네요. 고수님들께 쿼리좀 부탁드려봅니다. 초보 좀 살려주세요.....
다음의 테이블들이 있습니다.
<Claim> 테이블
ClaimID | PatientID | DateofService | DiagnosisCode | ProcedureCode |
1 | 1 | 5/14/1996 | 12345 | 987653 |
2 | 1 | 6/27/1996 | 876 | 92874 |
: | : | : | : | : |
<ConversionFactor>테이블
Year | ConvFact |
1994 | 33 |
1995 | 34 |
: | : |
<ClaimPayment> 테이블
ClaimID | DateofPay | PaidAmount |
1 | 4/8/1996 | 160 |
2 | 9/3/1996 | 45 |
: | : | : |
<HCPCS_RVU> 테이블
ProcedureCode | workrvu | pervu | mprvu |
13456 | 0.18 | 0.49 | 0.02 |
35677 | 0.45 | 0.67 | 0.89 |
: | : | : | : |
BilledAmount(청구금액) = (workrvu+pervu+mprvu) * ConvFact 라고 계산된다고 합니다.
단, ConvFact는 Calim 테이블의 DateofService의 년도 기준으로 ConversionFactor테이블의 년도(Year)에 해당하는 ConvFact를 써야합니다. 또한, OutstandingDue(잔액) = BilledAmount - PaidAmount 로 계산됩니다.
문제는, Claims 테이블을 기초로해서, 다음 9개의 행을 불러오는 겁니다.
ClaimID, PatientID, DateofService, DiagnosisCode, ProcedureCode, BilledAmount, PaidAmount, PaymentDate, OutstandingDue
어떻게 쿼리를 짜는게 정확한건가요?
Comment 3
-
이리
2015.12.16 11:49
-
항해자™
2015.12.16 11:52
대략 아래처럼 나오겠네요,,,
select a.cClaimId , a.cPatientId , a.cServeDate , a.cDiagCode , a.cProcCode , (d.cWordRvu + d.cPerRvu + d.cMpRvu) * b.cConvFact as cBilledAmt , c.cPaidAmt , c.cPaidDate , ((d.cWordRvu + d.cPerRvu + d.cMpRvu) * b.cConvFact) - c.cPaidAmt as cOutsDue from dbo.tClaim as a inner join dbo.tConvFact as b on b.cYear = right(a.cServeDate,4) inner join dbo.tClaimPaid as c on c.cClaimId = a.cClaimId inner join dbo.tHcpcsRvu as d on d.cProcCode = a.cProcCode go
-
cray
2015.12.16 17:06
감사합니다. 도움 많이 되었습니다!
하나씩 정리한 다음에 쿼리문을 작성 하시면 될거 같네요
테이블 JOIN 관계부터 보시면
Claim과 ConversionFactor 테이블은 Claim의 DataofService의 연도를 추출하셔서 ConversionFactor 테이블의 Year
Claim과 ClaimPayment 테이블은 ClaimID
Claim과 HCPCS_RVU 테이블은 ProcedureCode
이렇게 JOIN하시고 나머지 컬럼들은 계산만 하시면 되겠네요
원하시는 정확한 쿼리인지는 잘 모르겠네요..