Как получить первые данные IN и последний Out of Swipe для сотрудника ночной смены - PullRequest
0 голосов
/ 05 марта 2020

Как получить Первый и Последний в нескольких записях с ночной сменой:

У нас есть Дата, Время, EmpId, InOut, Shift_Start_Time и Shift_End_Time сотрудника.

Нужна ваша помощь написать sql для этих условий:

1.Смотрите записи, время которых находится между Shift_Start_Time и Shift_End_Time. Если время входа / выхода находится вне времени shift_start и Shift_End, игнорируйте их. Пример: Shift_Start_Time - 18:00:00, Shift_End_Time - 07:00:00. Если мое время на входе до 18:00 или время на выходе после 07:00, не нужно учитывать.

Возьмите первый вход и последний выход между временным окном Shift_Start и Shift_End. Примечание: здесь Дата будет меняться для ночной смены. Пример: Время первого входа в 18:30 03.04.2020 и время выхода в 06:30 03/05/2020

Если это дневная смена, просто возьмите первый вход и время последнего выхода OUT, и это время должно быть между Shift_Start и Shift_End time.

Мой текущий sql:

*SELECT
   CONVERT(varchar(10), CONVERT(date, convert(varchar(12), R.[date], 1), 103), 120) as date,
   R.[Time],
   substring(R.[Empid], 3, 7) as EmpID,
   R.[InOut],
   P.[Shift_Start_Time],
   P.[Shift_End_Time] 
FROM
   [dbo].[India_Swipe_Details] R 
   Left join
      [India_Employee_Ref] P 
      on substring(R.[Empid], 3, 7) = P.[India_ID] 
Where
   remark = 'Successful' 
   and type like 'Permanent%' 
   and gate in 
   (
      'B-1a Main Door 1',
      'B-1a Main Door 2',
      'B-1a North Fire Exit',
      'B-1a South Fire Exit',
      'Main Entry',
      'North Service Exit',
      'Secondary Entry',
      'South Fire Exit',
      'B5 Reception',
      'Opal Room(ops)',
      'Operation Floor(biometricacc.door)',
      'South Service Exit',
      'XOME_RECEPTION_ENTRY',
      'XOME_SERVICE_LIFT'
   )
   ---and substring(R.[Empid],3,7)=550270
   ---and (time >=[shift_start_time] or time <=[shift_End_time] )
order by
   [date],
   [time]*

Пример данных:

введите описание изображения здесь

1 Ответ

0 голосов
/ 05 марта 2020

У меня возникла эта проблема раньше:

Например, у меня есть такая запись:

ID         DATE_IN                 DATE_OUT                FIRST_IN_ID
24     03-05-2020 08:01:00        
25                           03-06-2020 01:01:00               24

Это поле FIRST_IN_ID будет определять, какое ID из IN должен быть партнером вашего OUT. Таким образом, вы можете легко получить запрос ваших данных.

Просто хочу помочь вам. Удачи.

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