[英]MSSQL Server Query using correlated query
我有兩個表:
Employee(EmployeeNum, Ename, Job, MGR, HireDate, SAL,COMM, DeptNo)
Department (DeptNo, DName, LOC)
我試圖找到以下內容:
問:每個部門中最近雇用的員工是誰?
查詢是:
SELECT Employee.Ename,
(SELECT MAX(HireDate)
FROM Department
WHERE Employee.DeptNo = Department.DeptNo)
AS HireDate
FROM Employee;
但是我收到以下錯誤:
消息8120,級別16,狀態1,行112在選擇列表中的列“ Employee.Ename”無效,因為它既不包含在聚合函數中也不在GROUP BY子句中。
什么是正確的查詢,可以幫助我從每個部門獲取最近雇用的員工?
謝謝!
如果這是SQL Server(根據該錯誤消息),則可以使用ROW_NUMBER()
窗口函數很容易地獲得此信息:
SELECT D.DName, E.EName, E.HireDate
FROM
Department D
INNER JOIN (
SELECT EmployeeNum, ENAme, HireDate, ROW_NUMBER() OVER (PARTITION BY DeptNo ORDER BY HireDate Desc) as hirerank
FROM Employee
) E ON D.DeptNo = E.DeptNo
WHERE E.hirerank = 1
使用最大條件時必須設置group by
:
SELECT Ename,
DeptNo
, MAX(HireDate)
FROM Employee
group by Employee.Ename,DeptNo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.