需要查询逻辑方面的帮助

Assistance with query logic needed

我会尽量保持简单。我尝试了几种方法,但总是卡住。所以我的问题是,收集以下数据的最佳途径是什么?

逻辑: 如果提供商和运营商在区域 'CI' 中的状态为 LP、CP、PP,则同一提供商和运营商在区域 'UI' 中的状态应为 'OP'。

以上逻辑将使用相同的table。这是一个错误报告。因此,我需要显示 provider/carrier 组合在区域 'UI' 中不是 'OP' 而它们在区域 'CI' 中具有 LP、CP、PP 的错误。如果他们有 'CI' 中的组合,他们就不需要 'OP' 记录。但是,如果他们确实在 'CI' 中有记录,那么我需要检查他们是否在 'UI' 中有记录。如果他们这样做,则必须是 Status 'OP'。

这是我根据您的逻辑使用的查询。我不确定这是否正确,因为我没有 运行 测试查询。

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')

如果我在正确的轨道上,有人可以帮我完成这个吗?如果没有,有人可以告诉我应该如何编码吗?

非常感谢, 格雷格

如果我没理解错的话,你想得到所有的 members_no 同时具有 (country='A',status ='CI') 和 (country = 'B',status = 'OP') 然后你根本不需要使用临时 table ,它可以通过很多方式完成,其中之一是 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')