【问题标题】:SQL Server - How join multiple tables in different databases with NO duplicates (simple query)SQL Server - 如何在不重复的情况下连接不同数据库中的多个表(简单查询)
【发布时间】:2016-11-12 16:11:53
【问题描述】:

首先,我是新手,所以这可能真的很简单。就是想不通。

我的问题:我有一个包含 560782 行数据的表 [这应该是我完成后的结果]。当我将它加入另一个表(不同的数据库)以获取 provname 时,我得到 582634 行。我知道这是因为有时同一供应商有两个条目。我只需要提供的单个实例。当我从不同的数据库添加第三个表时,更大的问题出现了。老实说,我不知道它返回了多少行,因为我不得不在大约 20 分钟后停止它。我很确定它正在复制 580782x582634。我相信有一些方法可以使用 DISTINCT 来提供帮助,但我不确定在哪里/如何。

/* add prov name and plan name to data set for analysis */
SELECT 
    a.pcp_id, a.HMO_ID, a.MEM_MONTH, a.MEM_YEAR, a.patient_id, 
    b.prov_name, b.org_name, b.serv_area_name, a.PLAN_NUMBER, 
    c.PLAN_TYPE_NAME  
FROM 
    IDA.dbo.ida_Mem_Mo a
INNER JOIN
    AMG.dbo.tbl_AMG_PROV b ON a.pcp_id = b.prov_id
LEFT JOIN 
    IDX.dbo.IDX_ENROLL c ON a.PLAN_NUMBER = c.PLAN_NUMBER
WHERE
    a.HMO_ID = 6 
    AND (a.MEM_DATE > CONVERT(DATETIME, '2014-12-31 00:00:00', 102))

【问题讨论】:

    标签: sql-server-2008 join duplicates


    【解决方案1】:

    我有一张包含 560782 行数据的表 [这应该是 完成后的结果]。当我将它加入另一张桌子时(不同的 数据库)来获取省名,我得到 582634 行。我知道那是 因为有时同一个provid有两个条目。我只是 需要提供的单个实例。

    要处理您需要在子查询中获取不同的 prov_id 值(仅当该表 AMG.dbo.tbl_AMG_PROV 对 prov_name、org_name、serv_area_name 的每个组合都有唯一的 prov_id 时才有效

    SELECT a.pcp_id, a.HMO_ID, a.MEM_MONTH, a.MEM_YEAR, a.patient_id, .....
    FROM IDA.dbo.ida_Mem_Mo a
    inner join
    (
    select distinct prov_id, prov_name, org_name, serv_area_name from 
    AMG.dbo.tbl_AMG_PROV b  ON a.pcp_id=b.prov_id
    ) b ON a.pcp_id=b.prov_id
    

    对于另一个表 IDX.dbo.IDX_ENROLL 类似

    但我需要知道架构和关系才能进一步帮助您

    【讨论】:

    • AMG表中prov_name,有时出现两次;相同的 prov_id 物理不同的地址(其他一切都相同)。我不确定您所说的架构是什么意思?对不起。这对我来说都是全新的。
    • 这就是为什么你会得到重复......所以如果一些 prov_id 有超过 1 个条目,你想选择哪一个?我们需要知道规则。有时我们可以使用表格布局(Schema)来解决这个问题。右键单击 table pick script table as --> create to --> file 。通过编辑和格式化将其保存并复制/粘贴到您的主帖子中。您还应该为相关列发布一些示例数据。并解释规则。否则将很难提供帮助。
    • 好的。我现在不在办公室。我明天回来时会这样做。老实说,选择哪一行并不重要,因为它们是同一个提供者。
    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 2010-11-28
    • 2011-01-29
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    相关资源
    最近更新 更多