我想知道是否有人可以提供帮助。
我正在尝试编写一些代码,使用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,所以非常感谢来自这里广大知识库的任何帮助!
谢谢,
答案 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