Как получить Первый и Последний в нескольких записях с ночной сменой:
У нас есть Дата, Время, 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]*
Пример данных:
введите описание изображения здесь