我有一个员工表,其中包含 emp_id、firstname、lastname、region_id、status 和 Effective_date 等列。
员工表可以有多个具有不同生效日期和状态的员工的条目。
员工可以有两种状态“离职者”和“加入者”。
id emp_id firstname region status effective_date
1 1 James Asia Joiner 1-Jan-2012
2 1 James UK Leaver 1-Aug-2012
3 1 James USA Joiner 1-Aug-2012
4 1 James Asia Leaver 1-May-2012
5 1 James UK Joiner 1-May-2012
6 1 James USA Leaver 1-Sep-2012
使用员工表中的上述数据,如果我想获得 2012 年 1 月 1 日的最新记录,我将获得 id = 1 的记录,
如果我想获得詹姆斯 2012 年 5 月 1 日的最新记录,我将获得 id = 5 的记录
如果我想获得詹姆斯 2012 年 8 月 1 日的最新记录,我将获得 id = 3 的记录,
如果我想获得詹姆斯 2012 年 9 月 1 日的最新记录,我将获得 id = 6 的记录
以下查询正确地给了我最新的记录
SELECT
emp_id,
MAX(effective_date) AS latest_effective_date
FROM
EMPLOYEE
GROUP BY
emp_id
但是,我如何获得其他列,例如 firstname 、 region 等。
如果我将它们放在 select 子句或 group by 子句中,我不仅会获得最新记录,还会获得其他记录。