【问题标题】:Assistance with query logic needed需要查询逻辑的帮助
【发布时间】:2016-03-14 14:13:37
【问题描述】:

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

逻辑: 如果提供者和运营商在区域“CI”中是状态 LP、CP、PP,则相同的提供者和运营商在区域“UI”中应该是状态“OP”。

上述逻辑将使用同一张表。这是一个错误报告。因此,当区域“CI”中有 LP、CP、PP 时,我需要显示提供者/运营商组合在区域“UI”中不是“OP”的错误。如果他们在“CI”中有组合,则他们不需要“OP”记录。但是,如果他们确实在“CI”中有记录,那么我需要检查他们是否在“UI”中有记录。如果他们这样做,它必须是状态'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')

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

非常感谢, 格雷格

【问题讨论】:

  • 一个很好的起点是从样本数据和期望的结果开始(对于网络上的问题和自己解决的问题)。我理解其中的逻辑,但不知道你想用它做什么。

标签: sql join temp-tables


【解决方案1】:

如果我对您的理解正确,并且您想要获得同时具有 (country='A',status ='CI') 和 (country = 'B',status = 'OP') 的所有 members_no,那么您不需要'根本不需要使用临时表,它可以通过多种方式完成,其中之一是 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')

你也可以使用join:

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

【讨论】:

  • 这是一个很好的开始!我可能没有包含一些信息,为此我深表歉意。这基本上是一个“错误”捕获查询。我需要找到 A 县的状态 PP、LP、CP 的 member_no 和 code_no 组合,但 B 县没有 Status OP 的 member_no/code_no 组合。我知道现在每个人都可能很困惑,因为我写得非常糟糕.让我尝试使用更准确的数据(而不是具有相同逻辑的假数据)再次执行此操作。
  • 如果有机会,您介意看看这些数据吗?我也更新了逻辑和所有内容。我的假数据解释为:member_no = provider_no code_no = carrier County = region
  • @GregoryBrauninger 您发布的查询看起来不错,尝试运行它并告诉我它是否有效
  • 查询运行完美。非常感谢你的帮助。在上一次编辑之前,我确实遇到了一个问题。我在返回错误结果的存在语句中没有 (aff.) 别名。添加后,它看起来很完美。我运行了测试查询,一切都在检查。我已经为此工作了一段时间。先生,您是个巫师。
猜你喜欢
  • 2013-12-14
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多