查询员工无缺勤连续到岗的日期区间
查询员工无缺勤连续到岗日期区间
假设有一名签订特定任务合同的企业员工,需按起止日期到岗工作。现需查询该员工无缺勤连续到岗的日期区间。
示例数据
DECLARE @TimeClock TABLE (PunchID INT IDENTITY, EmployeeID INT, PunchinDate DATE) INSERT INTO @TimeClock (EmployeeID, PunchInDate) VALUES (1, '2020-01-01'), (1, '2020-01-02'), (1, '2020-01-03'), (1, '2020-01-04'), (1, '2020-01-05'), (1, '2020-01-06'), (1, '2020-01-07'), (1, '2020-01-08'), (1, '2020-01-09'), (1, '2020-01-10'), (1, '2020-01-11'), (1, '2020-01-12'), (1, '2020-01-13'), (1, '2020-01-14'), (1, '2020-01-16'), (1, '2020-01-17'), (1, '2020-01-18'), (1, '2020-01-19'), (1, '2020-01-20'), (1, '2020-01-21'), (1, '2020-01-22'), (1, '2020-01-23'), (1, '2020-01-24'), (1, '2020-01-25'), (1, '2020-01-26'), (1, '2020-01-27'), (1, '2020-01-28'), (1, '2020-01-29'), (1, '2020-01-30'), (1, '2020-01-31'), (1, '2020-02-01'), (1, '2020-02-02'), (1, '2020-02-03'), (1, '2020-02-04'), (1, '2020-02-05'), (1, '2020-02-06'), (1, '2020-02-07'), (1, '2020-02-08'), (1, '2020-02-09'), (1, '2020-02-10'), (1, '2020-02-12'), (1, '2020-02-13'), (1, '2020-02-14'), (1, '2020-02-15'), (1, '2020-02-16');
预期输出说明
- 场景1:预期输出应为
'2020-01-01 至 2020-02-10',此为员工无缺勤连续到岗的区间
对应示例输出语句:SELECT 1 AS ID, FORMAT( getdate(), '2020-01-01') as START_DATE, FORMAT( getdate(), '2020-01-10') as END_DATE union all SELECT 1 AS ID, FORMAT( getdate(), '2020-01-11') as START_DATE, FORMAT( getdate(), '2020-01-15') as END_DATE union all SELECT 1 AS ID, FORMAT( getdate(), '2020-01-21') as START_DATE, FORMAT( getdate(), '2020-01-31') as END_DATE union all SELECT 1 AS ID, FORMAT( getdate(), '2020-02-01') as START_DATE, FORMAT( getdate(), '2020-02-10') as END_DATE - 场景2:预期输出应为
'2020-01-01 至 2020-01-15'和'2020-01-21 至 2020-02-10',此为员工无缺勤连续到岗的区间
内容的提问来源于stack exchange,提问作者Ajesh
相关产品推荐
相关产品推荐

