SQL Server:重复计数

时间:2016-12-13 19:59:18

标签: sql sql-server distinct-values

我有以下内容。但在最终结果中,一些员工ID被计算两次。我的目标是仅为employeeID列计算不同的[UniqueEmployees] ...有人可以帮助我吗?

这是这里的代码:

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]

1 个答案:

答案 0 :(得分:0)

尝试删除第一个&#39; distinct&#39;多余的选择&#39;。

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