2016-12-13 7 views
0

У меня есть следующее. Но в конечном итоге некоторые из идентификаторов сотрудника пересчитываются дважды. Моя цель состоит в том, чтобы отличать только employeeID за колонку [UniqueEmployees] ... Может кто-то, пожалуйста, помогите мне?SQL Server: число дубликатов

Это код здесь:

IF OBJECT_ID(N'tempdb..#GG') IS NOT NULL 
     DROP TABLE #GG 

SELECT DISTINCT 
    [month], vv.Hiremonth, 
    LoanNumber, vv.EmployeeId, 
    agentname, 
    vv.YearsOfService, vv.MonthsofService, 
    vv.TenureGrouping, vv.TenureMonthGrouping, 
    manager, 
    SUM([Call Counts]) as Calls, 
    SUM(opportunities) as Opportunities, 
    SUM([Discussed w/Customer]) as [Discussed w/Customer], 
    SUM(DidNotDiscuss) as [DidNotDiscuss], 
    SUM(CustomerInterested) as CustomerInterested, 
    (SELECT COUNT(DISTINCT MGR.EmployeeId) 
    FROM #MANAGERS MGR 
    WHERE --EmployeeId = EmployeeId  
      --and 
      CAST(CONVERT(datetime, RIGHT(MGR.HireMonth, 4) + LEFT(MGR.HireMonth, 2) + '01') as DATE) <= CAST(CONVERT(datetime, right([Month], 4) + left([Month], 2) + '01') as DATE) 
      --and MonthsOfService = MonthsOfService 
      --and YearsOfService = YearsOfService 
    ) as UniqueEmployees 
INTO 
    #GG 
FROM 
    #FINALtemp2b VV 
--left join 
    --(select distinct Employeeid 
    --from #FINALtemp2b) CC 
    --on CC.EmployeeId = VV.EmployeeId 
GROUP BY 
    [month], vv.Hiremonth, LoanNumber, vv.EmployeeId, 
    agentname, vv.YearsOfService, vv.MonthsofService, 
    vv.TenureGrouping, vv.TenureMonthGrouping, manager 
ORDER BY 
    [month] 
+0

Показать образцы данных и ожидаемый результат. \t Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. \t [** Как создать минимальный, полный и проверенный пример **] (http://stackoverflow.com/help/mcve) –

+0

'count (distinct ...)' правильный. Тем не менее, вы используете слишком много временных таблиц, о которых мы не знаем. Можете ли вы сократить свой запрос до минимального примера, включая ввод, чтобы показать, что он не работает? –

+0

вы можете добавить employee_id в select и group by it, тогда он покажет, какие из них подсчитываются дважды, и это может дать вам некоторое представление о том, почему их пересчитывают дважды. – user3700389

ответ

0

Попробуйте удалить первый «отличный» и избыток «выбрать».

IF OBJECT_ID(N'tempdb..#GG') is not null Drop Table #GG 
select * 
into #GG 
from (
    select 
     [month], 
     vv.Hiremonth, 
     LoanNumber, 
     vv.EmployeeId, 
     agentname, 
     vv.YearsOfService, 
     vv.MonthsofService, 
     vv.TenureGrouping, 
     vv.TenureMonthGrouping, 
     manager, 
     SUM([Call Counts]) as Calls, 
     sum(opportunities) as Opportunities, 
     sum([Discussed w/Customer]) as [Discussed w/Customer], 
     sum(DidNotDiscuss) as [DidNotDiscuss], 
     sum(CustomerInterested) as CustomerInterested, 
     count(distinct (MGR.EmployeeId)) 
    from #MANAGERS MGR 
    where cast(convert(datetime,right(MGR.HireMonth,4) + left(MGR.HireMonth,2) + '01') as DATE) <= cast(convert(datetime,right([Month],4) + left([Month],2) + '01') as DATE) 
    group by 
     [month], 
     vv.Hiremonth, 
     LoanNumber, 
     vv.EmployeeId, 
     agentname, 
     vv.YearsOfService, 
     vv.MonthsofService, 
     vv.TenureGrouping, 
     vv.TenureMonthGrouping, 
     manager 

) as UniqueEmployees 
+0

привет. Я предпочел бы сохранить таблицу с псевдонимом VV на картинке. – user2811136

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

  • Нет связанных вопросов^_^