繁体   English   中英

使用相关查询的MSSQL Server查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM