powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом
5 сообщений из 5, страница 1 из 1
Помогите с запросом
    #39593641
yuri7811
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблицу (учета рабочего времени) , формата (WorkNr, Date_Time , In_Out) постоянно записывается новые строки с рабочими номерами, временем прихода\ухода, и операцией (приход - 1 \ уход- 2).

Как можно запросом получить список рабочих в данный момент находящихся на работе ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #39593651
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuri7811В таблицу (учета рабочего времени) , формата (WorkNr, Date_Time , In_Out) постоянно записывается новые строки с рабочими номерами, временем прихода\ухода, и операцией (приход - 1 \ уход- 2).

Как можно запросом получить список рабочих в данный момент находящихся на работе ?
Для любого WorkNr Вы должны получить максимальную дату Date_Time для In_Out=1 это приход и для In_Out=2 это уход. Если максимальная дата первая больше второй - человек вчера пришел и ушел, а сегодня только пришел и еще не уходил. Следовательно, он на работе. И не важно, сколько раз он приходил/уходил, эти события могут не "биться" на пары, счетчики не работают из-за отключения электричества, к примеру. Если приход был вчера, позавчера, позапозавчера, а уход сегодня - его нет. И если вчера приход был, а уход позавчера, позапозавчера и так далее, в общем, время прихода больше - значит, он со вчера еще на работе сидит.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39593653
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuri7811В таблицу (учета рабочего времени) , формата (WorkNr, Date_Time , In_Out) постоянно записывается новые строки с рабочими номерами, временем прихода\ухода, и операцией (приход - 1 \ уход- 2).

Как можно запросом получить список рабочих в данный момент находящихся на работе ?
Возможно, такой запрос некошерный и его нужно подрихтовать напильником, но что есть.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
tt.WorkNr
(
select t1.WorkNr
,(select max(t2.Date_Time) from my_table t2 where t2.WorkNr = t1.WorkNr and t2.In_Out = 1) as [last_Prihod]
,(select max(t3.Date_Time) from my_table t3 where t3.WorkNr = t1.WorkNr and t3.In_Out = 0) as [last_Uhod]
from my_table t1
group by t1.WorkNr
) tt
where datediff(ms,[last_Uhod],[last_Prihod])>0
...
Рейтинг: 0 / 0
Помогите с запросом
    #39593654
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAP,

In_Out = 2 для ухода, конечно же.
...
Рейтинг: 0 / 0
Помогите с запросом
    #39593664
yuri7811
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за помощь завтра попробую
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]