У меня есть таблица имеет эту структуруSQL Server Как создать группу внутри группы - Использование GROUP BY
EmployeeID | LogDate | LogTime | TerminalID | InOut | Accepted
Эта таблица обрабатывать все лечащий из сотрудников
В тех случаях, когда колонка InOut = 0 -> In (работник просто наносит удар по его Shift)
Где Inout Колонка = 1 -> Out (Работник Только выбивать Чтобы закончить свою смену)
образец Дата, когда я оформлю Выбрать
для примера предыдущее изображение имеет EmployeeID = 1009 имеют 2 ударов в 2015-10-14 (06:56:28) И (16:13:51) Мне нужно в результате, чтобы дать мне время, которое он посещает между этими двумя 2 Times что есть (09: 17:23)
Я хочу иметь эту структуру результата
EmployeeID | LogDate | NumberOfPunshings | State | HoursAttending
Я попробовал этот запрос
select
Employeeid as EmpID,
logdate as logdt,
count(accepted) NumberOfPunshings,
case count(accepted) WHEN 1 THEN 'No Out Punch'
WHEN 2 THEN 'Perfect'
Else 'Null'
End as State,
CONVERT(varchar(12),
DATEADD(minute,
DATEDIFF(minute,
(select top 1 LogTime from Accesslog where Inout=0),
(select top 1 LogTime from Accesslog where InOut=1)), 0), 114) as HoursAttending
from Accesslog
where Logdate = CAST('2015-10-14' AS datetime)
group by
employeeid,logdate
order by Employeeid
Но это не работает, как я хочу это только принять одно первое значение (из таблицы) в HoursAttending
Я Создать SQL Скрипки, чтобы показать вам, как данные он выглядит как
http://sqlfiddle.com/#!3/0152f9/1
EmpID | logdt | NumberOfPunshings | State | HoursAttending
1009 | October, 14 2015 00:00:00 | 2 | Perfect | 08:00:00:000
1088 | October, 15 2015 00:00:00 | 2 | Perfect | 08:00:00:000
Ожидаемый результат должен быть
EmpID | logdt | NumberOfPunshings | State | HoursAttending
1009 | October, 14 2015 00:00:00 | 2 | Perfect | 08:00:00:000
1088 | October, 15 2015 00:00:00 | 2 | Perfect | 06:00:00:000
Различия в этих таблицах в колонке HoursAttending, потому что
первый Сотрудник (1009) начинает работать с 08:00 до 16:00, так что продолжительность есть (8:00) Правильно.
Второй сотрудник (1088) начинает работать с 009: 00 до 15:00, поэтому продолжительность должна быть (06:00) нет (08:00) Исправить.
что вы имеете в виду под 'не работает'? –
@vkp i означает, что только HoursAttending Column. Возьмите одно значение в каждом столбце. я обновить сообщение с изображением результата – Loai
Вы не ссылаетесь на EmpID в подзапросе – Horaciux