SQL Server Query Query - PullRequest
       2

SQL Server Query Query

0 голосов
/ 20 мая 2019

У меня есть таблица расписания, как показано ниже. Поле HourType представляет, введен ли Сотрудником время («0»), или его супервизор переопределяет или вводит время («1»). Если супервизор отменяет время, то есть запись 0 и 1 запись (8/4/2019). Если супервайзер вводит время, которое работник не сделал, тогда есть только 1 запись (4/12/2019). Мне нужен запрос, чтобы найти общее время для данной недели. Таким образом, в приведенном ниже примере общее количество часов для этой недели должно составлять 39,5 часов.

RecordId EmployeeId StartDate  EndDate   StartTime   EndTime      HourCount HourType
1        100        4/8/2019   4/8/2019  9:00:00 AM  5:00:00 PM   8         0
2        100        4/8/2019   4/8/2019  9:00:00 AM  4:30:00 PM   7.5       1
3        100        4/9/2019   4/9/2019  9:00:00 AM  5:00:00 PM   8         0
4        100        4/10/2019  4/10/2019 9:00:00 AM  5:00:00 PM   8         0
5        100        4/11/2019  4/11/2019 9:00:00 AM  5:00:00 PM   8         0
6        100        4/12/2019  4/12/2019 9:00:00 AM  5:00:00 PM   8         1

Добавлен второй набор данных, который будет включать несколько записей в день для учета часов обеда (4/11/2019). Общее количество часов для этого набора данных должно быть 37,5.

RecordId EmployeeId StartDate  EndDate   StartTime   EndTime       HourCount HourType
1        100        4/8/2019   4/8/2019  9:00:00 AM  5:00:00 PM    8         0
2        100        4/8/2019   4/8/2019  9:00:00 AM  4:30:00 PM    7.5       1
3        100        4/9/2019   4/9/2019  9:00:00 AM  5:00:00 PM    8         0
4        100        4/10/2019  4/10/2019 9:00:00 AM  5:00:00 PM    8         0
5        100        4/11/2019  4/11/2019 9:00:00 AM  12:00:00 PM   3         0
6        100        4/11/2019  4/11/2019 9:30:00 AM  12:00:00 PM   2.5       1 
7        100        4/11/2019  4/11/2019 1:00:00 PM  5:00:00 PM    4         0   
8        100        4/12/2019  4/12/2019 9:00:00 AM  5:00:00 PM    8         1

1 Ответ

1 голос
/ 20 мая 2019

Похоже, вы хотите:

select employeeId, sum(hourcount)
from (select t.*,
             row_number() over (partition by employeeid, startdate, enddate order by hourtype desc) as seqnum
      from t
     ) t
where seqnum = 1;

То есть, если несколько записей соответствуют emplyeeid, startdate и enddate, выберите переопределить одну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...