Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Ср Ноя 30, 2016 14:50 Заголовок сообщения: Превышение нормы сверхурочных |
|
|
Нужно написать запрос, который выявит работников в основном табеле которых, есть превышение нормы сверхурочных согласно ТК - не более 4 часов за два любых календарных дня. Желательно без построчного перебора. Нужно анализировать и последнее число предыдущего месяца и первое следующего.
Если у кого есть поделитесь пожалуйста. |
|
Вернуться к началу |
|
|
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Чт Дек 01, 2016 14:41 Заголовок сообщения: |
|
|
select dateadd(day,-1,dateadd(month,1,'@@tYear-@@tMonth-01')) into dt_; --последнее число месяца
select dateadd(dd,-1,dateadd(month,-1,dateadd(day,1,dt_))) into dt_1; --последнее число предыдущего месяца
select dateadd(day,-1,dateadd(month,1,'@@tYear-01-01')) into dt_01; --первое января года
browser
{
select
TN,
FIO,
s.struct_name,
r1.dt[dd.mm.yyyy],
r.dt[dd.mm.yyyy],
r.sm + r1.sm[]"Часов сверхурочных",
'Более 4 часов сверхурочных за два дня подряд'
from
(
select pid,dt,sum(hours) sm from tb_tabel t
where t2 in ('С') and dt between dt_1 and dt_
group by pid, dt
) r
join
(
select pid,dt,sum(hours) sm from tb_tabel t
where t2 in ('С') and dt between dt_1 and dt_
group by pid, dt
) r1 on (r.pid=r1.pid and dateadd(dd,1,r1.dt) = r.dt)
join people p on (p.pid = r.pid)
join user_tabel l on (l.pid = p.pid and cmonth = @@tYear*12+@@tMonth)
join structs s on (s.struct_code=l.shop)
where r.sm + r1.sm > 4
UNION ALL
select
TN,
FIO,
s.struct_name,
'' as dt,
'' as dt1,
r.sm,
'Превышено 120 часов сверхурочных с начала года'
from
(
select pid, sum(hours) sm from tb_tabel t
where t2 in ('С') and dt between dt_01 and dt_
group by pid
) r
join people p on (p.pid = r.pid)
join user_tabel l on (l.pid = p.pid and cmonth = @@tYear*12+@@tMonth)
join structs s on (s.struct_code=l.shop)
where r.sm > 120
order by 2,3
},,ПРОВЕРКА СВЕРХУРОЧНЫХ без учета табеля по изменениям;
Последний раз редактировалось: rebel25 (Чт Дек 01, 2016 17:21), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Volod Большой шоколадный орден
Зарегистрирован: 11.02.2015 Сообщения: 252
|
Добавлено: Чт Дек 01, 2016 16:04 Заголовок сообщения: |
|
|
судя по названию таблицы leroy_tabel
вы не используете базовые объекты табельного учёта от бкс |
|
Вернуться к началу |
|
|
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Чт Дек 01, 2016 17:23 Заголовок сообщения: |
|
|
эта пользовательская таблица не влияет на логику, я ее использовал чтобы по быстрому подтянуть фамилию и другие реквизиты работника, сам табель тиражный. |
|
Вернуться к началу |
|
|
rebel25 Большой шоколадный орден
Зарегистрирован: 06.10.2008 Сообщения: 580 Откуда: Москва
|
Добавлено: Чт Окт 31, 2024 18:46 Заголовок сообщения: |
|
|
Посмотрел на своё творение восьмилетней давности и ужаснулся его производительности. Переписал.
select
top 1 1
from
(
select t.pid,dt,sum(hours) sm from tb_tabel t (nolock) Join #pidlist TT (nolock) on (t.pid = TT.pid)
where t2 in ('С') and dt between dt_1 and dt_
and TAB_ID = @@tb_type
group by t.pid, dt
) r
left join
(
select t.pid,dt,sum(hours) sm from tb_tabel t (nolock) Join #pidlist TT (nolock) on (t.pid = TT.pid)
where t2 in ('С') and dt between dt_1 and dt_
and TAB_ID = @@tb_type
group by t.pid, dt
) r1 on (r.pid=r1.pid and dateadd(dd,1,r1.dt) = r.dt)
--join people p on (p.pid = r.pid)
--Join #pidlist TT on (TT.pid = p.pid) --#11934
--join leroy_tabel l (nolock) on (l.pid = p.pid and cmonth = @@tYear*12+@@tMonth)
--join structs s on (s.struct_code=l.shop)
where isnull(r.sm,0) + isnull(r1.sm,0) > 4 |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|