2016-03-14 3 views
2

Я постараюсь сделать это максимально простым. Я пробовал несколько способов, но всегда застрял. Поэтому мой вопрос: какой лучший способ сбора следующих данных?Необходима помощь с логикой запроса

Логика: Если поставщик и перевозчик - это статус LP, CP, PP в регионе «CI», то тот же провайдер и оператор должен иметь статус «OP» в пользовательском интерфейсе региона.

Вышеупомянутая логика будет использовать ту же таблицу. Это отчет об ошибке. Поэтому мне нужно показать ошибки, когда комбинация провайдер/оператор не является «OP» в пользовательском интерфейсе Region, когда у них есть LP, CP, PP в Region CI. Им НЕ НУЖНА запись «OP», если у них есть комбо в «CI». Однако, если у них есть запись в «CI», тогда мне нужно проверить, есть ли у них запись в «UI». Если они это сделают, это должен быть статус «ОП».

Вот запрос, который я использовал на основе вашей логики. Я не уверен, что это правильно, поскольку я не запускал тестовые запросы.

Select distinct aff.aff_no, aff.prov_no, IRS_No,prog_no, Last_name,  First_name + ' ' + Last_name as Provider_Name, prov.CONTROL_NO, office_no, aff.Carrier, aff.[Region], aff.pay_class, aff.status, aff.spec_1, aff.op_no, aff.hat_code, aff.area, aff.period_table_no, pat_to as pay_to, aff.medicare_no, aff. eff_date, aff.end_date, aff.trans_date, 'Status/Region Error' As [Rept Error], ACTIVE_PATIENTS as member_cnt 
from amisys.dbo.Provider Prov 

INNER JOIN amisys.dbo.Affiliation Aff 
on Prov.Prov_no = Aff.Prov_No 
where aff.end_date = '12/31/9999' 
and aff.void = ' ' 
and PAY_CLASS <> 'dummy' 
and irs_no = '721269878' 
and status in ('PP','LP','CP') 
and region = 'CI' 
and HAT_CODE = 'SP' 
and EXISTS(Select 1 from amisys.dbo.Affiliation aff2 
     Where aff.prov_no = aff2.PROV_NO 
      and aff.carrier = aff2.carrier 
      and aff2.region = 'UI' 
      and aff2.status = 'OP') 

Может кто-нибудь, пожалуйста, помогите мне заполнить это, если я на правильном пути? Если нет, может кто-нибудь, пожалуйста, покажите мне, как это должно быть закодировано?

Благодаря кучу, Грег

+1

Хорошее место для начала - с сыром данные и желаемые результаты (как для вопроса в Интернете, так и для работы над ним самостоятельно). Я понимаю логику, но понятия не имею, что вы пытаетесь с ней сделать. –

ответ

0

Если я правильно вас понял, и вы хотите, чтобы получить все members_no, который имеет как (страна = 'A', статус = 'CI') и (страна = «B », состояние =„OP“), то вам не нужно использовать временную таблицу вообще, это может быть сделано много способов, один из них EXISTS:

SELECT m.member_No, m.Code_No, m.Status, m.County, m.City, m.State, m.Zip 
FROM dbo.member m 
WHERE m.county = 'B' and 
     m.Status = 'OP' and 
     EXISTS(select 1 from dbo.member m2 
      where m.member_no = m2.member_no 
       and m.code_no = m2.code_no 
       and m2.country = 'A' 
       and m2.status = 'CI') 

вы можете также использовать присоединиться :

SELECT m.member_No, m.Code_No, m.Status, m.County, m.City, m.State, m.Zip 
    FROM dbo.member m 
    INNER JOIN dbo.member m2 
    ON(m.member_no = m2.member_no and m.code_no = m2.code_no 
     and m.country = 'B' and m.status = 'OP' 
     and m2.country = 'A' and m2.status = 'CI') 
+0

Это отличное начало! Возможно, у меня не было никакой информации, потому что я прошу прощения. Это, в основном, запрос об ошибке «ошибка». Мне нужно найти, где в членстве A есть члены member_no и code_no, которые связаны с статусом PP, LP, CP, но в county B. не существует элемента member_no/code_no статуса OP. Я знаю, что все, вероятно, запутались прямо сейчас, потому что я написал это ужасно , Позвольте мне попытаться сделать это снова, используя более точные данные (в отличие от поддельных данных с одинаковой логикой). –

+0

Не могли бы вы взглянуть на эти данные, когда у вас появится шанс? Я также обновил логику и все. Мои поддельные данные интерпретированы как это: member_no = provider_no code_no = носитель район = область –

+0

@GregoryBrauninger Запрос вы вывесили выглядит хорошо, попробуйте запустить его и скажите мне, если он работает – sagi

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