MS-Access запрос на общее количество часов и время удержания - PullRequest
2 голосов
/ 14 февраля 2011

Мне нужно выполнить расчет табеля рабочего времени. Сотрудник будет вводить и выводить данные.Я храню эти записи в одной таблице.В этой таблице есть время и поле для ввода или вывода.Сотрудник может выйти на обед или по другим причинам и нанести удар за увольнение. Мне нужно вычесть это время и получить рабочее время.Моя таблица будет выглядеть так:

PunchTime  EmpCode    IsInpunch
10:01 AM   (A)        T
12:03 PM   (A)        F            (this isoutpunch) 
01:05 PM   (A)        T
07:14 PM   (A)        F
10:32 AM   (B)        T

Для времени (A) 7.14 - 10.01 - это общее количество часов, но он не был там с 12.03 по 01.05, поэтому мне нужно вычесть время обеда и получитьобщее количество часовКак это сделать в Query

1 Ответ

4 голосов
/ 14 февраля 2011

Это довольно просто. Предполагая, что ваши T и F IsInPunch сбалансированы, то есть на любой день, у вас будет T-F или T-F-T-F и т. Д. (Всегда в паре), просто сложите F и вычтите общее количество T.

select empcode, DateValue(PunchTime),
    sum(IIF(IsInPunch='F',PunchTime,0)) -
    sum(IIF(IsInPunch='T',PunchTime,0))
from TimeSheet
group by empcode, DateValue(PunchTime)

(нет доступа к Access, но проверьте синтаксис)

...