表架构:

create table dept
(
     DEPTNO int NOT NULL,
     DNAME VARCHAR(14),
     LOC VARCHAR(13)
)

create table emp
(
     EMPNO int primary key,
     ENAME VARCHAR(1000),
     JOB VARCHAR(1000),
     MGR int,
     HIREDATE DATETIME,
     SAL decimal(15, 5),
     COMM decimal(20, 5),
     DEPTNO int
)
Deptnodept表中的emp具有主键和外键关系

问题:找到每个部门中最近雇用的员工。

查询:
SELECT
    convert(varchar(50), e.ENAME + ',' + e.DEPTNO),
    MAX(hiredate)
FROM
    emp e
JOIN
    dept d ON e.deptno = d.deptno
GROUP BY
    convert(varchar(50), e.ENAME + ',' + e.DEPTNO)

我收到一个错误:

最佳答案

您的错误来自此部分;尝试使用e.ENAME + ',' + e.DEPTNO运算符添加两个不同类型的字段的+,因此您需要使用正确的convert用法,例如:e.ENAME + ',' + CONVERT(VARCHAR(50), e.DEPTNO)

但是,要回答您的问题,您需要另一种查询,例如:

SELECT TOP(1)
    e.ENAME + ',' + CONVERT(VARCHAR(50), e.DEPTNO)
FROM
    dept d
    LEFT OUTER JOIN
    (SELECT *, ROW_NUMBER() OVER (PARTITION BY DEPTNO ORDER BY HIREDATE DESC) AS recentHired
     FROM emp) e ON d.DEPTNO = e.DEPTNO
ORDER BY
    e.recentHired

10-08 19:56