sql - Finding 'break' records -


could please take @ teh following task?

i have 'schedule' table. has following structure:

create table schedule (     employee nvarchar(50),     shift_start datetime,     shift_end datetime ) 

'schedule' contains data:

insert schedule(employee,shift_start,shift_end) values ('emp01','2017-08-21 09:00:00.000','2017-08-21 12:00:00.000'), ('emp01','2017-08-21 12:30:00.000','2017-08-21 16:00:00.000'), ('emp01','2017-08-21 17:00:00.000','2017-08-21 20:00:00.000'), ('emp02','2017-08-21 09:00:00.000','2017-08-21 12:00:00.000'), ('emp02','2017-08-21 13:30:00.000','2017-08-21 16:00:00.000'), ('emp02','2017-08-21 16:30:00.000','2017-08-21 20:00:00.000'), ('emp03','2017-08-21 09:00:00.000','2017-08-21 12:00:00.000'), ('emp03','2017-08-21 15:30:00.000','2017-08-21 20:00:00.000') 

enter image description here

task:if difference between shift start date , previous shift end date each employee each date greater 1 minute , less 60 minutes - add 1 more row ('break' row) existing dataset.

expected result following: enter image description here

thank in advance!

you need previous value. in sql server 2008, 1 way uses apply. additional rows:

select employee, prev_shift_end, shift_start, 'break' shift_type (select s.*, sprev.shift_end prev_shift_end       schedule s cross apply            (select top 1 s2.*             schedule s2             s2.employee = s.employee ,                   s2.shift_start < s.shift_start             order s2.shift_start desc            ) sprev       ) s datediff(minute, prev_shift_end, shift_start) between 1 , 60; 

you can put insert before logic insert rows in table.


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -