2014-06-13 3 views
0

У меня возникли проблемы с дублированием данных в запросе, что я бегу в SQL Server 2005:Выберите или нижний запись из присоединяемой таблицы

`SELECT i.datecreated, i.CompanyName, i.City, i.State, i.Phone, i.InsCoID, i.Address1, i.Zip, 
case i.Reviewed when 0 then 'Pending Approval' else 'Active' end, 
r.FirstName + ' ' + r.LastName AS Adjuster, r.Phone 
FROM V_InsRepresentative r 
RIGHT JOIN V_InsCompany i ON r.InsCoID = i.InsCoID 
WHERE i.DateCreated >= '5/18/2014' 
And i.DateCreated < '5/26/2014' 
AND i.Status = '1' 
ORDER BY  i.state, i.companyname` 

Одна из записей дублей, потому что есть два монтажники. Есть ли способ, чтобы иметь только 1 установочное шоу?

+0

, который он должен показать ?, и в какой таблице скопирован дубликат ?, и какой столбец является «регулятором»? – Lamak

+0

Запрос заключается в определении компаний, добавленных в диапазон дат. Если назначено более одного регулятора, он дублирует компанию для каждого перечисленного регулятора. – sgriggs

ответ

0

Я хотел бы предложить фиксируя это в from пункте:

FROM (SELECT r.*, row_number() over (partition by InsCoID order by INsCoId) as seqnum 
     FROM V_InsRepresentative r 
     ) r 
     RIGHT JOIN V_InsCompany i ON r.InsCoID = i.InsCoID and r.seqnum = 1 

Это будет произвольно выберите один из строк из таблицы r, что, я считаю, означает то, что вы подразумеваете под двойными инспекторами.

+0

Это сработало! Он по-прежнему сохраняет нулевые значения и выбирает только одну запись регулятора. Спасибо, Гордон! – sgriggs

0

Распределите данные с Max() на корректировке, так что только один регулировщик будет показывать:

SELECT i.datecreated , 
     i.CompanyName , 
     i.City , 
     i.State , 
     i.Phone , 
     i.InsCoID , 
     i.Address1 , 
     i.Zip , 
     CASE i.Reviewed 
      WHEN 0 THEN 'Pending Approval' 
      ELSE 'Active' 
     END , 
     Max(r.FirstName + ' ' + r.LastName) AS Adjuster , 
     r.Phone 
FROM V_InsRepresentative r 
     RIGHT JOIN V_InsCompany i ON r.InsCoID = i.InsCoID 
WHERE i.DateCreated >= '5/18/2014' 
     AND i.DateCreated < '5/26/2014' 
     AND i.Status = '1' 
group by 
i.datecreated , 
     i.CompanyName , 
     i.City , 
     i.State , 
     i.Phone , 
     i.InsCoID , 
     i.Address1 , 
     i.Zip , 
     CASE i.Reviewed 
      WHEN 0 THEN 'Pending Approval' 
      ELSE 'Active' 
     END , 
     r.Phone 
ORDER BY i.state , 
     i.companyname 
+0

Вы имеете в виду, что есть два регулятора с тем же именем? Все ли столбцы alll в дублированной записи одинаковы? –

+0

Нет, компания добавляет строку для каждого регулятора, и я хочу видеть только одну запись для каждой компании. – sgriggs

+0

Если это сработает, лучше, чтобы бизнес определил, какой регулятор выбрать, только показывая один. Возможно, им нужно увидеть оба имени. Возможно, в базе данных есть способ показать, кто является основным регулятором. Это первый этап для бизнеса, и последний раз для экспертов sql о том, как справиться с этим. OP должен обсудить со своим бизнесом, как они хотят определить, какой из них показывать. – HLGEM

Смежные вопросы