AdventureWorks2014 - 根据职位名称创建最新招聘的摘录

时间:2017-04-05 20:05:51

标签: tsql join adventureworks derived-table

我想知道是否有人可以提供帮助。

我正在尝试编写一些代码,使用Adventureworks2012数据库返回基于Jobtitle的最新雇员列表。

到目前为止,我有以下内容:

    SELECT DISTINCT HREDH.BusinessEntityID,
    HRE.JobTitle,
    hre.HireDate
FROM [HumanResources].[EmployeeDepartmentHistory] HREDH
INNER JOIN HumanResources.Employee HRE ON HREDH.BusinessEntityID = HRE.BusinessEntityID
    AND hre.BusinessEntityID = (
        SELECT TOP 1 BusinessEntityID
        FROM HumanResources.Employee hre2
        WHERE hre2.JobTitle = hre.JobTitle
        ORDER BY HireDate DESC
        )
ORDER BY HRE.JobTitle

这似乎工作正常,但我确信有更好的方法(不在语句开头使用SELECT DISTINCT)

我正在尽我所能自己学习SQL,所以非常感谢来自这里广大知识库的任何帮助!

谢谢,

1 个答案:

答案 0 :(得分:0)

这将返回两个表的连接中的所有行,其中职位的雇用日期等于该职位的最高日期。

SELECT
    HREDH.BusinessEntityID
    ,HRE.JobTitle
    ,hre.HireDate
FROM [HumanResources].[EmployeeDepartmentHistory]  AS HREDH
    JOIN HumanResources.Employee AS HRE
        ON HREDH.BusinessEntityID = HRE.BusinessEntityID
WHERE HRE.HireDate = (SELECT MAX(HireDate) FROM HumanResources.Employee AS _HRE WHERE HRE.JobTitle = _HRE.JobTitile)
ORDER BY HRE.JobTitle