2011-10-04 51 views
0

这是我不得不面对的任务:sql show current instance

列出雇用期间在部门间转移的员工。你应该显示他们当前的部门,以及转移到当前部门的日期。这是一个非常艰难的查询。我的解决方案是使用子查询来确定哪些员工在多个部门中,并在基本查询中使用该结果。

问题是我不知道如何显示已转移且仅转移一次的员工。告诉员工是否已被转移的方式是,如果在EmployeeDepartmentHistory表中,员工ID已经在多个记录中(即employeeID1在记录1和记录2中,因为该人员在两个部门中)。我将如何去做这件事?这是我现在所拥有的:

SELECT EmployeeDepartmentHistory.EmployeeID,Person.Contact.FirstName, Person.Contact.LastName, Department.Name 
From HumanResources.Department INNER JOIN 
     HumanResources.EmployeeDepartmentHistory ON 
     HumanResources.Department.DepartmentID = 
     HumanResources.EmployeeDepartmentHistory.DepartmentID INNER JOIN 
     HumanResources.Employee ON HumanResources.EmployeeDepartmentHistory.EmployeeID 
     = HumanResources.Employee.EmployeeID INNER JOIN 
     Person.Contact ON HumanResources.Employee.ContactID = Person.Contact.ContactID 
WHERE EmployeeDepartmentHistory.EmployeeID=(SELECT COUNT(HumanResources.EmployeeDepartmentHistory.EmployeeID) 
     FROM HumanResources.EmployeeDepartmentHistory 
     WHERE EmployeeDepartmentHistory.EmployeeID = Employee.EmployeeID 
     Group by EmployeeDepartmentHistory.EmployeeID) 
+0

这是一个练习中,我们从来没有在课堂上。这仅仅是我个人的知识 – user974047

回答

1

不知道我是否得到正确的要求。你想在最后尝试HAVING子句吗?

即:

HAVING COUNT(EmployeeDepartmentHistory.EmployeeID) = 2 

(2 - 假设EmployeeDepartmentHistory将包含当前部门以及)