【问题标题】:Getting Duplicate Values When Joining the Same Table Twice两次加入同一个表时得到重复值
【发布时间】:2019-10-09 06:12:42
【问题描述】:

使用不同条件对同一个表进行多次连接。

我正在尝试从表中获取一个值,但有不同的标准。有一列具有我要检索的值。有两组标准。

问题在于 Else 行。逻辑是,如果第一次连接中的条件为真,则获取 c_wRVUAmt 值。如果没有匹配,则使用第二个连接中的条件。如果那里没有匹配,则使用 0。

我得到了重复的记录,这我明白。我只是不明白如何编写连接或查询来消除重复行。

select a.[Revenue Id]
      ,a.CPT
      ,a.[Procedure Mod]
      ,dd.MemberId
      ,ee.MemberId
      ,dd.c_HCPCS
      ,ee.c_HCPCS
      ,dd.c_MOD
      ,ee.c_MOD
      ,CASE When a.[GL Company Unit] IN ('6500','6600','6700') and a.[Rev Code] = '0320'
                 then 0 
            When RTRIM(a.[BE Name]) <> 'Hospital'
                 Then 0 
            Else ISNULL(dd.c_wRVUAmt * a.[Total Qty],0)+ISNULL(ee.c_wRVUAmt * a.[Total Qty],0)
      end as WorkRVUAmt 
from GP_CUSTOMS..Revenue_Staging a 
Left Outer Join d_Dim22 dd on a.[CPT] = dd.c_HCPCS
                          and a.[Procedure Mod] = dd.c_MOD
                          and a.[Procedure Mod] in ('26','53')
Left Outer Join d_Dim22 ee on a.[CPT] = ee.c_HCPCS
                          and a.[Procedure Mod] NOT IN ('26','53')

我正在寻找一排。

【问题讨论】:

  • 您是否尝试过GROUP BYdistinct 以避免重复
  • 轻松为您提供帮助:minimal reproducible example.
  • 问题在于 Else 行。 ... 消除重复行。 -- 您面临这两个不同的问题吗?

标签: sql tsql join


【解决方案1】:

有很多方法可以删除重复项。 其中之一是使用子选择来选择数据。

尝试在您的选择周围加上另一个选择 WITH DISTINCT:

SELECT DISTINCT
[Revenue Id]
      ,CPT
      ,[Procedure Mod]
      ,MemberId1
      ,MemberId2
      ,c_HCPCS
      ,c_HCPCS
      ,c_MOD
      ,c_MOD
      ,WorkRVUAmt 
FROM (<YOUR SELECT HERE>)

请记住为您的列名称 MemberId 提供别名(例如 MemberId1、MemberId2)

【讨论】:

    【解决方案2】:

    没有办法消除恰好来自查询中提供的左连接的记录。您可以编写一个相关的子查询并从连接右侧的任一表中传递一行,或者通过 distinct 修改选择中的结果,我认为这不是您的选择!

    【讨论】:

      猜你喜欢
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多