Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Посчитать стаж сотрудника за исключением диапазона

$
0
0
Всем привет

Прочитал несколько тем на форуме, посвященные моей проблеме

вот например http://www.sql.ru/forum/553845/kak-vychislit-raznicu-v-datah

но ответа так пока и не нашел.

Если кто подскажет буду очень благодарен.

Есть кадровая программа, уже давно написанная. Возникла необходимость её немного дописать.

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

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

Дело в том что некоторые сотрудники увольнялись и возвращались в компанию, и по ним у меня неправильный подсчет стажа.

Все события "принят на работу" "фактически уволен" и т.п. пишутся в таблицу tbl_PersonnelHistory:

PH_ID PERSONNEL_ID DATE ACTION
1654 381 2015-08-19 00:00:00.000 0
1761 381 2016-04-28 00:00:00.000 6
1928 381 2017-06-06 00:00:00.000 0

выше показал результат выборки с такого запроса:

SELECT *
FROM tbl_PersonnelHistory
WHERE PERSONNEL_ID=381 AND [ACTION] IN (0,6)

PERSONNEL_ID=381 - Сотрудник

[ACTION] 0 - принят на работу
6 - фактически уволен


нужен такой запрос чтобы посчитать стаж от события ACTION=0 до ACTION=6 от второго события ACTION=0 по текущую дату и при этом исключить время от события ACTION=6 до второго ACTION=0

все что я придумал это написать процедуру и вызывать её в запросе, а самой процедуре уже выполнять "сложные" вычисления, определять очередность событий по номеру PH_ID и определять какой из ACTION выше или ниже другого и потом это все считать

а вот как это все написать одним запросом никак не могу понять, если кто меня понял и готов подсказать большое вам заранее спасибо!

Viewing all articles
Browse latest Browse all 7251

Trending Articles