计算两列组合的一列唯一记录的数量?

时间:2019-05-06 00:22:23

标签: sql-server

http://sqlfiddle.com/#!18/caa9f/4

我有一个表Employee,其中有三列(EmpID,DateID,SourceID)。表中可能有重复的记录。我需要再添加一行,例如SourceCount,以为DateID和EmployeeID的唯一组合计算唯一来源的数量。该表应保持原样,但应添加新列,以显示dateid和empid的每种组合有多少个唯一来源。第一行的示例:(1,2,4,1),第二行:(1,2,4,1),第四行(3,2,7,2)等

这是我尝试过的。

select EmpID,
       DateID,
       SourceID,
       Rank() over ( partition by DateID, EmpID,SOurceID order by SourceID ) SourceCount     
 from Employee

2 个答案:

答案 0 :(得分:0)

我认为这只是一个简单的计数不同查询:

select distinct EmpID, DateID,
count(distinct  SourceID)
from Employee
group by EmpID,DateID

答案 1 :(得分:0)

您可以使用CROSS APPLYCOUNT

SELECT *
FROM Employee e
CROSS APPLY (
  SELECT
    SourceCount = COUNT(DISTINCT SourceID)
  FROM Employee e2
  WHERE
    e2.EmpID = e.EmpID
    AND e2.DateID = e.DateID
) t