Как рассчитать общее зарегистрированное время за день? - PullRequest
1 голос
/ 11 апреля 2019

Как рассчитать общее количество часов, проведенных внутри в SQL? Например, для этого сотрудника общее количество часов, проведенных внутри, будет 12-2 = 10.

EmpID   Enter/Exit  Time 
 2999   Entry   06:00AM 
 2999   Exit    12:00PM
 2999   Entry   01:00PM 
 2999   Exit    03:00PM 
 2999   Entry   04:00PM
 2999   Exit    06:00PM

1 Ответ

3 голосов
/ 11 апреля 2019

В SQL Server 2008 это болезненно. Предполагая, что значения входа / выхода связаны, а время действительно является действительным временем даты, вы можете сделать:

select empid,
       sum(datediff(hour, t.time, t2.time)) as sum_hours
from t cross apply
     (select top (1) t2.*
      from t t2
      where t2.empid = t.empid and
            t2.enter_exit = 'exit' and
            t2.time > t.time
     ) as next_time
where t.enter_exit = 'enter'
group by empid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...