我的SQL脚本用于显示公司、员工编号、姓氏、名字、当前工作和当前工资。
要达到当前的东西意味着有涉及的日期。
如何显示该员工的当前职务和工资?
EMP(基表)
| empno| LastName| FirstName|
| --|--|--|
| 111 |詹姆斯|勒布朗|
| 222 |科比|科比|
| 333 |约旦|迈克尔|
| 444 |咖喱|斯蒂芬|
dept_job视图
| 公司|empno| effdate|工作|工资|
| --|--|--|--|--|
| 湖人| 111 |2015年4月16日|助理|一千五百|
| 湖人| 111 |16年2月2日|教练|四千|
| 湖人| 222 |17年7月22日|分析师|三千|
| 公牛| 333 |2017年4月12日|书记|五千|
| 公牛| 333 |2018年7月28日|经理|五千|
| 战士| 444 |10/04/19|厨师|二千|
我在生效日期(effdate)上使用MAX()来获取最新的工作和薪水。但它显示了过去的工作和薪水。
SELECT z.company, em.empno, em.lastname, em.firstname, z.job, z.salary
FROM emp em
JOIN ( SELECT dj.company, dj.empno, dj.effdate, dj.job, dj.salary
FROM dept_job dj
JOIN (SELECT company, empno, MAX(effdate) AS maxefffdate
FROM dept_job
GROUP BY company, empno) pe
ON dj.empno = pc.empno AND dj.effdate = pe.maxeffdate) z
ON em.empno = z.empno
ORDER BY company, empno;
字符串
结果(错误)
| 公司|empno| LastName| FirstName|工作|工资|
| --|--|--|--|--|--|
| 湖人| 111 |詹姆斯|勒布朗|助理|一千五百|
| 湖人| 111 |詹姆斯|勒布朗|教练|四千|
| 湖人| 222 |科比|科比|分析师|三千|
| 公牛| 333 |约旦|迈克尔|书记|五千|
| 公牛| 333 |约旦|迈克尔|经理|五千|
| 战士| 444 |咖喱|斯蒂芬|厨师|二千|
我想要的
| 公司|empno| LastName| FirstName|工作|工资|
| --|--|--|--|--|--|
| 湖人| 111 |詹姆斯|勒布朗|教练|四千|
| 湖人| 222 |科比|科比|分析师|三千|
| 公牛| 333 |约旦|迈克尔|经理|五千|
| 战士| 444 |咖喱|斯蒂芬|厨师|二千|
3条答案
按热度按时间busg9geu1#
字符串
uhry853o2#
字符串
ie3xauqp3#
在WHERE子句中使用子选择,它只返回最新的日期,因此只给你最新的记录。
字符串