2016-07-10 3 views
0

Во-первых, я новичок, поэтому это, вероятно, очень просто. Я просто не смог понять это.SQL Server - Как объединить несколько таблиц в разных базах данных без дубликатов (простой запрос)

Моя проблема: у меня есть одна таблица с 560782 строками данных [это должно быть результатом, когда я закончил]. Когда я присоединяюсь к другой таблице (другой базе данных), чтобы получить пронумеру, я получаю 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)) 

ответ

0

У меня есть одна таблица, которая имеет 560782 строк данных [это должно быть результат, когда я закончу]. Когда я присоединяюсь к другой таблице (другая база данных ), чтобы получить пронумеру, я получаю 582634 строки. Я знаю, что это , потому что для одного и того же провайдера иногда есть две записи. Я ТОЛЬКО нужен единственный экземпляр для обеспечения.

обрабатывать, что вам нужно, чтобы получить различные значения prov_id внутри подзапроса (будет работать только в том случае, что таблица AMG.dbo.tbl_AMG_PROV имеет уникальный prov_id для каждой комбинации prov_name, ORG_NAME, serv_area_name

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

, но я должен знать схему и отношения, чтобы быть в состоянии помочь вам в дальнейшем

+0

в таблице AMG, то prov_name, несколько раз появляется TWIC е; один и тот же prov_id физический другой адрес (все остальное одно и то же). Я не уверен, что вы подразумеваете под схемой? Сожалею. Это все очень ново для меня. – Nikki

+0

Вот почему вы получаете дубликаты ... так что если у некоторых prov_id есть более 1 записи, которые вы хотите выбрать? Нам нужно знать правило. Несколько раз мы можем понять это, используя макет таблицы (Схема). Щелкните правой кнопкой мыши таблицу таблицы выбора таблицы как -> create to -> file. SAve и скопируйте/вставьте это в свой основной пост, отредактировав его и отформатируйте. Вы также должны разместить некоторые данные образца для соответствующих столбцов. И объясняет правила. В противном случае будет очень сложно помочь. – objectNotFound

+0

ОК. Сейчас я вышел из кабинета. Я сделаю это, когда вернусь завтра. Честно говоря, не имеет значения, какая строка выбрана, поскольку они являются одним и тем же провайдером. – Nikki