【发布时间】:2018-05-30 10:22:14
【问题描述】:
我有以下表格:
Employee24( EMPLOYEEID, FIRSTNAME, LASTNAME, GENDER, JOBROLES);
Leave25( EMPLOYEEID,LEAVEID, LEAVETYPE, STARTDATE, ENDDATE);
JOBROLESELIGIBLELE(JOBROLES, ELIGIBLE_SICK_LEAVES, ELIGIBLE_EARNED_LEAVES)
我想编写一个查询来查找在工作岗位方面已休超过合格休假的员工
SELECT *
FROM EMPLOYEE24
WHERE EMPLOYEEID IN (SELECT EMPLOYEEID
FROM LEAVE25 L WHERE (STARTDATE-ENDDATE)
< (SELECT ELIGIBLE_SICK_LEAVES + ELIGIBLE_EARNED_LEAVES
FROM JOBROLESELIGIBELE
GROUP BY JOBROLES));
【问题讨论】:
-
请关闭大写锁定!
-
样本数据、预期结果和术语定义会有所帮助。
-
表的主键是什么?是
Employee24(EmployeeId)、Leave25(EmployeeId,LeaveId)`和JobRolesEligibele(JobRoles)吗? -
@Thorsten Kethner 是的。
-
数据模型似乎有点不对劲。我想 LEAVETYPE 表示 ELIGIBLE_SICK_LEAVES, ELIGIBLE_EARNED_LEAVES (并且接受的答案支持这个假设)。情况不应该如此。在所有表中为不同的休假类型使用列,或者为不同的
LEAVETYPE使用行。不要将两者混为一谈。