【发布时间】:2020-12-23 02:26:11
【问题描述】:
我有一个有 4 列的表:dept_no, emp_no, from_date, to_date,其中每个 dept_no,emp_no 是经理。
我想使用to_date 查找当前经理,我想显示dept_no 和emp_no。
样本数据:
|emp_no |dept_no | from_date | to_date |
| 11 | d001 | 1985-01-01 | 1991-10-01 |
| 12 | d001 | 1991-10-01 | 9999-01-01 |
| 21 | d002 | 1985-01-01 | 1989-12-17 |
| 22 | d002 | 1989-12-17 | 9999-01-01 |
| 31 | d003 | 1985-01-01 | 1992-03-21 |
| 32 | d003 | 1992-03-21 | 9999-01-01 |
样本输出:
|emp_no |dept_no |
|12 |d001 |
|22 |d002 |
|32 |d003 |
我想通了:
SELECT dept_no
, emp_no
FROM
( SELECT dept_no
, MAX(to_date) as cur
FROM dept_manager
GROUP
BY dept_no) as new
JOIN dept_manager using(dept_no)
where cur = to_date;
我正在为每个部门查找MAX(to_date),然后在WHERE 子句中使用它。
这可行,但我觉得应该有更好的方法来做到这一点。
我见过很多类似的问题,但没有一个对我有帮助,因为我想显示一个不能在 group by 中使用的列。
【问题讨论】:
-
请分享一些示例数据和预期结果。您可以使用 row_number。
-
MySQL SQL Server。请仅标记一个数据库。
标签: sql datetime subquery max greatest-n-per-group