2012-06-19 4 views
-1

내 쿼리 : 여기내부 조인에서 중복을 제거하는 방법?

select 
    SUM(payments.paid_amt) as paid_amt, 
    SUM(payments.copay_amt) as copay_amt, 
    SUM(payments.CO_INSURANCE_AMT) as co_ins_amt, 
    SUM(payments.PATIENT_RESP_AMT) as patient_resp_amt, 
    accession.ACCESSION_ID 

    from 
    [F_PAYOR_PAYMENTS_monthly] payments 

    join F_ACCESSION_daily accession 
    on accession.ACCESSION_ID=payments.ACCESSION_ID 

    where accession.XIFIN_LOAD_DATE between '20111201' and '20111231' 

    group by accession.ACCESSION_ID 

가 가입 데이터의 샘플입니다 : 지불은

enter image description here

와 현재 위치 :

enter image description here

내 문제가 동일 동일한 가입에 대한 지불이 여러 번 계산되었습니다.

내 질문은 어떻게 특정 가입에 대한 지불이 한 번만 합산되었는지 확인합니까?

payments ---> accession 사이의 관계는 지침 many to 1

정말 고마워요이다. 내가 위의 예를 들어 기대하고 무엇을

은 다음과 같습니다

AA895325, sum(paid_amt), sum(copayt_amt), etc.. 
+1

샘플 데이터와 원하는 결과를 보여주십시오. 귀하가 올린 글이 질의와 단어 문제 일 경우, 명확성을 요구하는 일련의 후속 질문을 받게 될 것입니다. –

+1

무엇이 잘못되었는지 설명하기위한 데이터의 예를 제공해주십시오. 지불 수준에서 아무 것도 반환하지 않으므로 "많은 가입에 대해 중복 지불을 반환합니다"라는 의미는 분명하지 않습니다. –

+0

@ GordonLinoff, 특정 수령액에 해당하는 모든 지불액을 합산합니다 –

답변

2

좋아요, 내가 당신의 문제를 이해한다고 생각하면, 당신이 고려하지 않은 매우 간단한 개념처럼 보입니다. 당연히 지불 테이블에는 accesion_id 당 하나 이상의 지불이 있습니다. 심지어 테이블의 이름은 (F_PAYOR_PAYMENTS_monthly)에 대한 힌트를 제공합니다. 따라서 accesion_id에 여러 번 지불하는 것이 놀라운 이유는 무엇입니까? 어떤 지불 방법을 선택해야하는지에 대한 의견을 말하지 않으므로 한 달 또는 몇 달 단위로 필터링하십시오 :

select accession.ACCESSION_ID, 
     SUM(payments.paid_amt) as paid_amt, 
     SUM(payments.copay_amt) as copay_amt, 
     SUM(payments.CO_INSURANCE_AMT) as co_ins_amt, 
     SUM(payments.PATIENT_RESP_AMT) as patient_resp_amt 

from [F_PAYOR_PAYMENTS_monthly] payments 
join F_ACCESSION_daily accession 
on accession.ACCESSION_ID=payments.ACCESSION_ID 
where accession.XIFIN_LOAD_DATE between '20111201' and '20111231' 
AND payment.[Month] = '201112' 
group by accession.ACCESSION_ID, payments.[Month] 
1

은 선택과로 그룹에서 accession_id 가져 가라. 네가 말했기 때문에 가입으로 요약하고있어.

XIFIN_LOAD_DATE의 월 및 연도 부분으로 그룹화 할 때 보았을 때 선택 목록에도 포함될 것으로 예상됩니다.

위의 의견을 읽었으므로 나는 완전히 혼란에 빠지기 시작합니다.

귀하가 가입으로 합계하고 1 대 다수 인 경우, 하나 이상의 가입이 중복되지 않습니다. 네가 원하는대로하는거야. 당신이 가입 날짜의 년/월으로 요약하려면

, 다음 제거 가입-ID는 링크 된 날짜에 무엇 년/월을 기준으로 모든 가입 나 합계해야한다.

그것은 모든 도움이 될를 당신이 입력을위한 약간의 예제 데이터를 작성한 다음, 쿼리에 대해 어떤 결과가 기대되는지를 열거했다.

+0

톤 감사합니다. 내 문제는 동일한 액티비티에 대한 동일한 지불이 여러 번 계산 된 것입니다. –

+0

tony, 가입으로 합계 할 필요가 없습니다. 내가 선택에서로드 날짜를 꺼냈다. –

+0

그렇다면 SELECT 목록에 ACCESSION_ID가있는 이유는 무엇입니까? –

2

여기 (이 정말 대답은 아니지만 코멘트에 대해 너무 깁니다) 몇 가지 가능성이 있습니다 : 표에

(1) 당신은이 중복. 당신이 중복을보고 있다는 것을 감안할 때, 이것은 가장 눈에 띄는 곳이 될 것입니다.

(2) 귀하의 성명서 "내 문제는 동일한 가입에 대한 동일한 지불이 여러 번 계산됩니다."라는 말은 정확하지 않습니다. 문제는 추가 지불액이 계산된다는 것입니다. 나는 지불금이 그들에게 지급 날짜가 있다고 생각하고 있으며, 그것을 받아들이는 액티비티 레벨의 날짜 논리를 기대하고 있습니다. 그러나이 논리는 여전히 모든 지불을 허용합니다.

(3) 분석에서 여러 지불이 기록되고 있습니다. 쿼리는 정확하지만 어떤 이유로 예상 한대로 수행되지 않습니다.

가입 표에 중복 가입 아이디가있는 경우를 제외하고는 쿼리 작성시 지불액이 증가하지 않아야합니다.

관련 문제