表架构:
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
)
Deptno
和dept
表中的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