Как запросить посещаемость на MS-ACCESS - PullRequest
0 голосов
/ 25 августа 2018

Я хочу запросить посещаемость из ms-access с одной таблицей и рассчитать количество часов работы:

emp_id  emp_name  emp_date  emp_time emp_dept    emp_mode  
1       mike      20140819  201040    security       5
1       mike      20140820  051005    security       4 
2       tess      20140819  074910    hr             5
2       tess      20140819  171011    hr             4

Теперь я хочу отобразить их так:

emp_id  emp_name  emp_date           time-in  time-out  HrsWork
1       mike      20140819-20140820  210010   051005    9
2       tess      20140819-20140819  075910   171011    10 

Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 28 августа 2018

Имейте в виду, что использование ctrl + k позволит вам печатать, используя строки кода, что поможет вам выровнять все.

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

emp_id emp_did emp_date emp_time emp_dept emp_mode 1 mike 20140819 201040 security 5 1 mike 20140820 051005 security 4 2 tess 20140819 074910 hr 5 2 tess 20140819 171011 hr 4

переводится в:

emp_id emp_name emp_date    emp_time      emp_dept        emp_mode
1       mike    2014/08/19  20:10:40      security         5 
1       mike    2014/08/20  05:10:05      security         4 
2       tess    2014/08/19  07:49:10      hr               5 
2       tess    2014/08/19  17:10:11      hr               4

Это дало мне лучшее понимание того, чего вы пытались достичь.

но мы все живем и учимся.Я думаю, что вы ищете что-то вроде следующего оператора SQL.

SELECT HourCalc.emp_id, HourCalc.emp_name, HourCalc.StartDateTime, HourCalc.EndDateTime, DateDiff('n',[startdatetime],[enddatetime])/60 AS HrsWorked
FROM (SELECT t1.emp_id, t1.emp_name, CDate([emp_date] & ' ' & [emp_time]) AS StartDateTime, 
           (SELECT MIN(cdate(t2.emp_date & ' ' & t2.emp_time))
            FROM emptable t2
            WHERE t2.Emp_id = t1.Emp_ID
            AND cdate(t2.emp_date & ' ' & t2.emp_time) > cdate(t1.emp_date & ' ' & t1.emp_time)
            AND emp_mode = '4') AS EndDateTime
      FROM emptable AS t1
      WHERE (((emp_mode) = '5'))) as HourCalc;

В каждом предложении where, если ваш emp_mode является типом данных числового поля, просто удалите одинарные кавычки вокруг чисел 4 и 5.

Возможно, это не тот макет, который вы разместили в своем вопросе, но он должен поставить вас на правильный путь.

Если это не сработает, дайте мне знать, и мы сможем сделать больше копанийчтобы найти правильную инструкцию SQL, которую вы ищете.

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