Как получить время и выход с помощью sqlquery - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть таблица с полями name, id, date, intime / outtime, datetime.

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

Если сотрудник прошел, то это его 1-е время.Если он уехал, то это его время.Итак, в конце дня его окончательное время, а затем продолжительность с 1-го и последнего времени должны быть рассчитаны.

Когда я взял минимальное время, я получил 1-е время.Но, если я возьму максимальное время ожидания, я получу текущий статус, который может входить / выходить.

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

Ответы [ 3 ]

1 голос
/ 10 ноября 2011
SELECT name, date , MIN(convert(char(8),datetimecolumn,108) AS intime , MAX(convert(char(8),datetimecolumn,108) AS outtime, (outtime -intime) as duration 
FROM myTable
GROUP BY name, date
1 голос
/ 10 ноября 2011
  select name,MAX(convert(char(8),datetimecolumn,108)as outtime,MIN(convert(char(8),datetimecolumn,108) as intime , 
  (MAX( convert(char(8),datetimecolumn,108 ) - MIN( convert(char(8),datetimecolumn,108 ) )AS duration from Table

OR

SELECT name,intime/outime 
 (SELECT MAX([convert(char(8),datetimecolumn,108]) AS outtime FROM ... WHERE ...)
- (SELECT MIN([convert(char(8),datetimecolumn,108]) AS inTime FROM ... WHERE ...)
 AS duration  from TABLE
0 голосов
/ 10 ноября 2011

Возможно, что-то вроде этого:

SELECT
  name,
  date,
  FirstInTime = MIN(CASE [intime/outtime] WHEN 1 THEN datetime END),
  LastOutTime = MAX(CASE [intime/outtime] WHEN 2 THEN datetime END)
FROM atable
GROUP BY
  name,
  date

Если первое событие всегда происходит во времени, тогда столбец FirstInTime можно определить просто как

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