【发布时间】:2016-11-17 01:33:25
【问题描述】:
我有一个表 (ATTENDANCE) 包含员工的出勤率如下
EMPNO DATE
2 07/11/2016
2 07/12/2016
3 07/12/2016
6 07/13/2016
7 07/13/2016
其中包含员工编号(empno)和参加日期(日期)
另一个表(EMPLOYEES)包含公司中的所有员工,例如这样
EMPNO NAME
1 Musa
2 Ali
3 Khalid
6 James
7 Sara
我可以使用此代码查看员工是否在特定日期缺勤
select empno
from EMPLOYEES
where empno not in (select empno
from ATTENDANCE
where date = '07/11/2016')
我想检索特定范围内任意一天的缺勤员工列表
我尝试使用此查询
select empno
from EMPLOYEES
where empno not in (select empno
from ATTENDANCE
where date between '07/11/2016' and '07/13/2016' )
但这会给我那些在此范围内所有天缺勤的人,如果员工在一天内缺勤,它将不会收回它
我想要一个查询来检索 empno 和员工缺勤的日期?
更新: 正如sagi提到的,我也试过这个
select empno
from EMPLOYEES
where empno not in (select empno
from ATTENDANCE
group by empno
having count(empno) = to_date(' 07/09/2016','mm,dd,rrrr') - to_date('07/13/2016','mm,dd,rrrr') )
这会起作用,但它不会告诉我员工缺勤的日期
【问题讨论】:
-
在您的输出中,您是否需要区分“工作日”或“工作日”,以及“周末或节假日”?我假设在周日(在美国),所有员工都会“缺席”。