1

我有一个有 2 列的表,例如 Empname、DepartmentName,其中一名员工可能在多个部门工作,反之亦然。我想编写一个查询以根据某些部门组合选择 EmpName。例如。仅在 Dept1、Dept2 和 Dept3 下工作的员工(在这种情况下,应仅选择仅在 3 个部门下工作的员工)

这是我尝试过的查询。

Select EmpName, Count(*) as Total from Emp_Departments where DepartmentName in ('Dept1', 'Dept2', 'Dept3') group by EmpName having Total=3

这里的问题是,任何在上述任何部门工作且总人数为 3 的员工,它也会返回他们的行。请建议我如何才能获得唯一的组合。

4

1 回答 1

1

你很亲密 - 使用:

  SELECT d.EmpName, COUNT(*) as Total 
    FROM Emp_Departments d
   WHERE d.DepartmentName IN ('Dept1', 'Dept2', 'Dept3') 
GROUP BY d.EmpName 
  HAVING COUNT(DISTINCT d.DepartmentName) = 3
于 2012-06-01T03:31:51.837 回答