簡體   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