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

Откуда:
Сообщений: 96
Добрый день
Может у кого-то будут идеи как выполнить расчет по примеру на скрине
То есть, нужно по каждому сотруднику посчитать стаж без учета периода его работы на должности с кодом 4

Если бы должность 4 встречалась только первой записью (как и предполагалось, но на практике не соблюдается) то просто:
DATEDIFF(day,(select MIN(cc.start) FROM cte cc WHERE  cc.status != 4),cd.[Дата] )


Если бы должность 4 встречалась только раз то что-то на подобии:
ROUND(  (CAST( DATEDIFF( day, MIN(cu.start)OVER(PARTITION BY cu.[title]), cd.[Дата] ) as numeric(7,1))+1)/30  - 
             (CAST( DATEDIFF( day, (select MIN(cc.start) FROM cte cc WHERE cc.status = 4), (select MAX(cc.End) FROM cte cc WHERE cc.status = 4) ) as numeric(7,1))+1)/30, 1, 1)


Но реально должность 4 может встречаться больше одного раза по каждому сотруднику и не соблюдается логическая последовательность
Может кто подскажет логику

К сообщению приложен файл. Размер - 19Kb
13 окт 15, 16:38    [18273739]     Ответить | Цитировать Сообщить модератору
 Re: Запрос расчета стажа  [new]
Макбет
Member

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

если сотрудник одновременно работает только на 1 должности (без совмещения в пределах фирмы) что мешает просто просуммировать стаж (дни) по каждому периоду где Status<>4?
13 окт 15, 16:42    [18273785]     Ответить | Цитировать Сообщить модератору
 Re: Запрос расчета стажа  [new]
fury_fury
Member

Откуда:
Сообщений: 96
Макбет,
Заработался, На самом деле результат нужно записать в другую таблицу, соединенную с календарем с подневным результатом такого расчета. Но реально подсказали идею, добавил еще одно CTE, и норм.
Спасибо
13 окт 15, 17:31    [18274133]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить