Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Учет заданий, сделанных в рабочее время  [new]
kint36
Member

Откуда:
Сообщений: 4
Добрый день. Подскажите, пожалуйста, идею, как можно в отчете реализовать следующее: в отчете отражается фактически выполненное количество заданий сотрудником. Каким образом можно разделить задания на сделанные в рабочее время и в нерабочее время, например, если человек остался на переработку?
Ниже сам отчет.

+
declare @d varchar(19), @attribut varchar(10)
set @d = SWITCHOFFSET(?, '-03:00'); set @attribut = ?
select COUNT(i.serialkey) as oper
, case when i.SOURCETYPE = 'ntrPickDetailUpdate' then 'Отгрузка' 
when i.SOURCETYPE = 'ntrReceiptDetailAdd' then 'Приёмка' 
when i.SOURCETYPE = 'ntrAdjustmentDetailUnreceive' then 'Отмена приёмки'
when i.SOURCETYPE = 'PICKING' then 'Отбор'
when i.SOURCETYPE in ('NSPRFPA02', 'RFPUTAWAYTASK') then 'Размещение' 
when i.SOURCETYPE in ('NSPRFRL01', 'RFMOVETASK', 'RFREPLENISHMENTTASKFINAL') then 'Перемещение'
when i.SOURCETYPE = 'nspRFTRP01' then 'Пополнение' 
when i.SOURCETYPE = 'TaskReasonMove' then 'Перемещение в LOST' 
when i.SOURCETYPE = 'RFMoveFlowThrough' then 'Перемещение отобр. товара'
when i.SOURCETYPE = 'Console Move' then 'Перемещение через рабочую станцию'
else i.SOURCETYPE end as descr 
into #t1
from wmwhse1.ITRN I
inner join scprdd1.dbo.e_sso_user u on i.EDITWHO = u.sso_user_name
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where convert (nvarchar(19), i.EDITDATE, 120) between @d and (? +' '+'20:59:59') 
and (i.EDITWHO like 'tv%' or i.EDITWHO like 'stvp%' or i.EDITWHO like 'mst%' or i.editwho in ('rsa', 'abn', 'cai')) 
and i.TOLOC <> 'INTRANSIT' 
and not (FROMLOC = 'pickto' and TOLOC = 'pickto' and FROMID <> TOID) and i.SOURCETYPE <> 'SHORTPICK'
and i.editwho not like 'tvo%' and ua.sso_user_attribute_value like @attribut  
group by i.SOURCETYPE

UNION

select COUNT(i.serialkey) as oper
, case
when i.SOURCETYPE = 'ntrPickDetailUpdate' then 'Отгрузка' 
when i.SOURCETYPE = 'ntrReceiptDetailAdd' then 'Приёмка' 
when i.SOURCETYPE = 'PICKING' then 'Переупаковка'
else i.SOURCETYPE end as descr
from wmwhse1.ITRN I
inner join scprdd1.dbo.e_sso_user u on i.EDITWHO = u.sso_user_name
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where convert (nvarchar(19), i.EDITDATE, 120) between @d and (? +' '+'20:59:59') and (i.EDITWHO like 'tv%' or i.EDITWHO like 'stvp%' or i.EDITWHO like 'mst%' or i.editwho in ('rsa', 'abn', 'cai')) 
and i.TOLOC <> 'INTRANSIT' 
and (FROMLOC = 'pickto' and TOLOC = 'pickto' and FROMID <> TOID)
and i.editwho not like 'tvo%' and ua.sso_user_attribute_value like @attribut
group by i.SOURCETYPE

UNION

select COUNT(rh.SERIALKEY) as qty_task, 'Приёмка ТМ' as descr
from wmwhse1.RECEIPTDETAILSTATUSHISTORY rh (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = rh.ADDWHO
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where RECEIPTKEY in (select distinct RECEIPTKEY 
from wmwhse1.RECEIPTDETAILSTATUSHISTORY 
where STATUS in ('-1'))
and status = '0' and convert(nvarchar(19), rh.ADDDATE, 120)  between @d and ?+' '+'20:59:59' and ua.sso_user_attribute_value like @attribut

UNION

select  COUNT(*) as pick_QTY, 'Отбор из хранения ТВР' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where EXTERNORDERKEY like 'TBP%' and convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-HRANST', 'Z-BARELL', 'Z-HISTORAG', 'Z-HRANSTHI', 'HR-OIL', 'Z-HRANC', 'CROSS'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_MEZONIN, 'Отбор из Мезонина' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where /*EXTERNORDERKEY like 'TBP%' and*/ convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('M-BOX', 'Z-M OUN', '	Z-M1', 'Z-M2', 'Z-MKOMP', 'Z-OTBXDMEL'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_AO_hran, 'Отбор из хранения А(О)' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where EXTERNORDERKEY like 'A%' and convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-HRANST', 'Z-BARELL', 'Z-HISTORAG', 'Z-HRANSTHI', 'HR-OIL', 'Z-HRANC', 'CROSS'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_TBP, 'Отбор ТВР' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where EXTERNORDERKEY like 'TBP%' and convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-OTBORST', 'Z-TEMP', 'Z-OTBSTHI', 'Z-OIL', 'OTB-MEDIUM', 'Z-KOMP', 'Z-CROSS', 'CROSSNAPL', 'Z-STEKLA'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_AO, 'Отбор А(О)' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where EXTERNORDERKEY like 'A%' and convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-OTBORST', 'Z-TEMP', 'Z-OTBSTHI', 'Z-OIL', 'OTB-MEDIUM', 'Z-KOMP', 'Z-CROSS', 'CROSSNAPL', 'Z-STEKLA'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_obresh, 'Отбор обрешёток' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-SHTAB1', 'Z-MEGA', 'Z-SHTAB5', 'Z-SHTAB4', 'Z-SHTAB3', 'Z-SHTAB2'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_bumper, 'Отбор бамперов, Кладовка' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-KLAD', 'Z-KLAD-B', 'Z-HROTBAMP', 'Z-HRANSTKR'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut
UNION
select  COUNT(*) as pick_glush, 'Отбор глушителей' as pick_type
from wmwhse1.TASKDETAIL td (nolock)
inner join scprdd1.dbo.e_sso_user u on u.sso_user_name = td.USERKEY
left join scprdd1.dbo.e_sso_user_attribute ua on u.e_sso_user_id=ua.sso_user_id
where td.ORDERKEY in (select ORDERKEY from wmwhse1.ORDERS where convert (nvarchar(19), EDITDATE, 120) between @d and (? +' '+'20:59:59'))
and td.FROMLOC in (select loc from wmwhse1.LOC where PUTAWAYZONE in ('Z-GLUSH'))
and (td.USERKEY like 'tv%' or td.USERKEY like 'stvp%' or td.USERKEY like 'mst%' or td.USERKEY in ('rsa', 'abn', 'cai')) and td.USERKEY not like 'tvo%' and ua.sso_user_attribute_value like @attribut

select SUM(CAST((case when descr = 'Приёмка ТМ' then oper/1.923 when descr = 'Переупаковка' then oper/2.308 when descr like 'Отбор%' then oper
		when descr = 'Перемещение' then oper/0.962 when descr = 'Размещение' then oper/0.846 when descr = 'Приёмка' then oper/1.154
		when descr = 'Перемещение отобр. товара' then oper/2.307
		else oper end) as decimal(8,2)))  as oper_ipnv
, descr, SUM(oper) as oper
from #t1
group by descr

drop table #t1


Сообщение было отредактировано: 23 июл 18, 09:41
23 июл 18, 09:25    [21593115]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
kint36,
а это как?
(? +' '+'20:59:59') 
23 июл 18, 09:34    [21593127]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
kint36
Member

Откуда:
Сообщений: 4
Возможно я не совсем правильно вопрос сформулировал. Например, если смена у человека длится с 8 до 16 и он сделал несколько заданий после окончания смены, они будут учитываться в этом отчете. И соответственно вопрос, как сделать, чтобы учитывались задания только в рабочее время
23 июл 18, 09:45    [21593145]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
AlBor
Member

Откуда: Россия
Сообщений: 156
если у вас есть таблица заданий и у каждого задания есть время окончания (сдачи), то почему бы не написать запрос на выборку только законченных в пределах рабочего времени..
23 июл 18, 09:58    [21593173]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
kint36,

школьный курс алгебры за 6-й класс, решение уравнений на числовой прямой. теорема об отрезках: два отрезка пересекаются если концы обоих отрезков больше обоих их начал.

вот и сравнивайте моменты начала/кончала рабочего времени и времени выполнения задания.
23 июл 18, 12:31    [21593767]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
aleks222
Member

Откуда:
Сообщений: 952
Щукина Анна
kint36,

школьный курс алгебры за 6-й класс, решение уравнений на числовой прямой. теорема об отрезках: два отрезка пересекаются если концы обоих отрезков больше обоих их начал.

вот и сравнивайте моменты начала/кончала рабочего времени и времени выполнения задания.


А ежели начал в рабочее, а закончил после?
23 июл 18, 13:01    [21593944]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
kint36
Возможно я не совсем правильно вопрос сформулировал. Например, если смена у человека длится с 8 до 16 и он сделал несколько заданий после окончания смены, они будут учитываться в этом отчете. И соответственно вопрос, как сделать, чтобы учитывались задания только в рабочее время
Вы не пишите сразу запрос, а сформулируйте как инженер, в терминах математики, сравнения чисел. Не "он сделал несколько заданий", а "задание считается как "сделано в нерабочее время", если время начала задания больше чем.. и ... меньше чем ..." и т.д.
А то, честное слово, вы как менеджер спросили!
23 июл 18, 13:53    [21594218]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
kint36
Member

Откуда:
Сообщений: 4
aleks222,
если начал в рабочее, а закончил после, то учитывается как выполненное в течении рабочего дня
23 июл 18, 14:01    [21594256]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
kint36
Member

Откуда:
Сообщений: 4
alexeyvg,

Большое спасибо за совет. Тогда будет звучать так: Для человека из условной смены А задание будет считаться "выполненным в нерабочее время", если время начала задания больше 16:00 и меньше чем 8:00
23 июл 18, 14:05    [21594281]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
kint36
alexeyvg,

Большое спасибо за совет. Тогда будет звучать так: Для человека из условной смены А задание будет считаться "выполненным в нерабочее время", если время начала задания больше 16:00 и меньше чем 8:00
Время события не может быть одновременно больше 16:00 и меньше 8:00 :-)
Наверное, вы имели в виду "ИЛИ"?

"ИЛИ" в T-SQL записывается оператором OR, больше и меньше - операторами ">" и "<"

Вот, когда составите на русском такие условия, запишите их на T-SQL в условиях запроса.

Только обязательно проверьте, проиграйте все варианты, не спешите кодить сразу.

Допустим, человек начал задание в 15, и закончил в 21 - это у вас выполнено в рабочее время. А вот начал в 17, и закончил в 21 - это у вас выполнено в нерабочее время. Правильно ли это?
23 июл 18, 15:55    [21594730]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
alexeyvg
Время события не может быть одновременно больше 16:00 и меньше 8:00 :-)
Почему? Начал в 16:00, а закончил на следующий день утром в 8:00
23 июл 18, 16:08    [21594782]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 2006
(Шутка) если пришел на работу на пять минут раньше, и начал, а закончил на пять минут позже, и ушел, то это задание сделанное с нерабочее время. потому что ни начало ни конец в рабочее время не попадает.
23 июл 18, 16:10    [21594792]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Vladimir Baskakov
(Шутка) если пришел на работу на пять минут раньше, и начал, а закончил на пять минут позже, и ушел, то это задание сделанное с нерабочее время. потому что ни начало ни конец в рабочее время не попадает.

(не шутка) а таким платить и не нужно - они альтруисты с горящими глазами, работающие за еду
23 июл 18, 16:28    [21594886]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
iap
alexeyvg
Время события не может быть одновременно больше 16:00 и меньше 8:00 :-)
Почему? Начал в 16:00, а закончил на следующий день утром в 8:00
Это да, это уже следующие вопросы :-)
23 июл 18, 20:31    [21595550]     Ответить | Цитировать Сообщить модератору
 Re: Учет заданий, сделанных в рабочее время  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
Vladimir Baskakov
(Шутка) если пришел на работу на пять минут раньше, и начал, а закончил на пять минут позже, и ушел, то это задание сделанное с нерабочее время. потому что ни начало ни конец в рабочее время не попадает.
Да, а за это двойная зарплата!
23 июл 18, 20:32    [21595553]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить