2012-06-19 2 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

моя проблема заключается в SAME оплата за ТОЛЬКО Вступление засчитывается несколько раз

Мой вопрос: как я могу убедиться, что платежи за конкретное присоединение суммируются только один раз?

отношения между 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, я бы ожидал их и в списке выбора.

Теперь, прочитав приведенные выше комментарии, я начинаю всецело спорить.

Если вы суммируете путем присоединения, и это одно для многих, то более одного входа не является дубликатом. Это то, что ты сказал, что хочешь.

Если вы хотите просуммировать по Год/Месяц даты присоединения, с последующим удалением присоединение-идентификатор должен сделать это сумма всех присоединений на основе того, что год/месяц связанный дата в.

Это помогло бы всем что вы просто немного использовали данные примера для ввода, а затем укажите, какие результаты вы ожидаете от запроса.

+0

Tony благодарит за это. моя проблема - ОЖИДАЕМЫЙ платеж за ТОЛЬКО Вступление засчитывается несколько раз –

+0

Тони, мне не нужно его суммировать путем присоединения. я выбрал LOAD DATE из выбранного. –

+0

Тогда почему ACCESSION_ID в списке SELECT ??? –

2

Вот некоторые возможности (это не совсем ответ, но это слишком долго для комментария):

(1) У вас есть дубликаты в таблицах. Учитывая, что вы видите дубликаты, это было бы самым очевидным местом для просмотра.

(2) Ваше утверждение: «Моя проблема в том, что ОЧЕНЬ РАСПРОСТРАНЯЕТСЯ ТОЛЬКО ИСПРАВЛЕНИЕ, подсчитывается несколько раз» не совсем правильно. Проблема в том, что подсчитываются дополнительные платежи. Я думаю, что у платежей есть дата платежа на них, и вы ожидаете, что логика даты на уровне присоединения поймает ее. Но эта логика все равно позволит все платежи.

(3) В вашем анализе неверны записи нескольких платежей. Запрос верный, но не делает то, что вы ожидаете по какой-то причине.

Как указано, запрос не должен увеличивать платежи, если в таблице присоединения нет дубликатов идентификаторов доступа.

Смежные вопросы