У меня есть таблица под названием «тайминги». Он содержит сведения о приходе и уходе сотрудников (morn_in, morn_out, днем_ин, днем_ут).
таблица времени
Я хотел бы добиться вывода, сгруппированного по staff_ref, SUM их отработанных часов, вот так;
staff_ref| total_worked|
U1 18:00
В настоящее время я использую 4 отдельных запроса для выбора каждого из 'type' (morn_in, morn_out и т. Д.), Один для type = 'morn_in' ниже, этот запрос называется [101 am in] (на него ссылаются позже) ;
SELECT
staff_ref
, time
, Format([date],"dd/mm/yyyy") AS t_date
FROM timings
WHERE (((type)='morn_in'));
Затем я СУММАЮ DateDiff между утренними часами;
SELECT
[101 am in].staff_ref
, Sum(DateDiff("n",[101 am in].[time],[102 am out].[time])) AS morning_mins
FROM [101 am in] INNER JOIN [102 am out]
ON ([101 am in].staff_ref = [102 am out].staff_ref)
AND ([101 am in].date = [102 am out].date)
GROUP BY [101 am in].staff_ref;
А затем СУММИТЕ дату в дневное время (то же, что и выше) отдельно в другом запросе, затем я добавляю результат этих двух запросов вместе, чтобы получить мой итог.
Как видите, он очень запутанный, и его не просто объяснить.
Я хотел бы знать, как я могу комбинировать запросы, поэтому мне нужен только один оператор, чтобы вернуть результаты, если это возможно.
Если я объяснил это ужасно, дайте мне знать, и я внесу поправки.
Спасибо
Редактировать 1 - 03/07/2018
Я использовал приведенный ниже код для извлечения необходимых мне данных, так как это тип данных «время», мне нужно было рассчитать общее количество минут, затем выполнить \ 60 для часов и MOD 60 для минут, так как результаты были более 24 часов.
SELECT
staff_ref,
CLng(24*60*CDate(Sum(IIf([type]='morn_out',[time],0)-IIf([type]='morn_in',[time],0)+
IIf([type]='afternoon_out',[time],0)-IIf([type]='afternoon_in',[time],0)))) AS time_mins,
[time_mins]\60 & Format([time_mins] Mod 60,"\:00") AS convert_backHHMM
FROM timings
GROUP BY
staff_ref,
fix(time)
;
Я хотел бы знать, как бы я справился с возможностью того, что у таблицы будет время "morning_out", но НЕТ времени "morning_in" (или наоборот). [Внешний интерфейс системы защищает от этого, но мне действительно любопытно и я хочу учиться}.
Спасибо за любую помощь