SQL 语句中的问题,以使用 "in" 获取记录组合



我有一个有 2 列的表格,比如 Empname、DepartmentName,一个员工可以在多个部门工作,反之亦然。我想编写一个查询来根据某些部门组合选择 EmpName。例如。仅在部门 1、部门 2 和部门 3 下工作的员工(在这种情况下,它应该只选择那些只在 3 个部门工作的员工)

这是我尝试过的查询。

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

这里的问题是,任何在上述任何部门工作的员工,他们的总数为 3,它也返回他们的行。请建议如何仅获得独特的组合。

你很接近 - 使用:

  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

最新更新