Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

История изменения должностей

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: ШКК (Штатно-Кадровый контур)
Предыдущая тема :: Следующая тема  
Автор Сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 579
Откуда: Москва

СообщениеДобавлено: Пн Дек 05, 2016 16:09    Заголовок сообщения: История изменения должностей Ответить с цитатой

Необходимо создать запрос, выводящий историю изменения должностей работников (с даты, по дату, должность). Вариант с min max не подойдет т к некоторые работники могут возвращаться на свои должности.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
NewAge



Зарегистрирован: 11.06.2010
Сообщения: 108

СообщениеДобавлено: Чт Дек 15, 2016 16:04    Заголовок сообщения: Ответить с цитатой

Код:
with tab_cte as (
   select distinct
      p.num_tab, c.full_name, p.in_date,
      (case isnull(pc_prv.date_depart, '1900-01-01') when '1900-01-01' then p.in_date else dateadd(day, 1, pc_prv.date_depart) end) as date_trans,
      (case isnull(pc_nxt.date_trans, '2099-01-01') when '2099-01-01' then p.out_date else dateadd(day, -1, pc_nxt.date_trans) end) as date_depart,
      a.name_appoint + isnull(' ' + cl.text_prof, '') as name_appoint
   from
      people as p join card as c on c.auto_card = p.auto_card
      join pr_current as pc_cur on pc_cur.pid = p.pid
      join appointments as a on a.code_appoint = pc_cur.code_appoint
      left join pclass as cl on cl.code_prof = pc_cur.w_class
      left join pr_current as pc_prv on pc_prv.prid = (
         select top(1) pc1.prid from pr_current as pc1 where pc1.pid = p.pid and pc1.date_trans < pc_cur.date_trans and (pc1.code_appoint != pc_cur.code_appoint or isnull(pc1.w_class, 0) != isnull(pc_cur.w_class, 0)) order by pc1.date_trans desc
      )
      left join pr_current as pc_nxt on pc_nxt.prid = (
         select top(1) pc2.prid from pr_current as pc2 where pc2.pid = p.pid and pc2.date_trans > pc_cur.date_trans and (pc2.code_appoint != pc_cur.code_appoint or isnull(pc2.w_class, 0) != isnull(pc_cur.w_class, 0)) order by pc2.date_trans
      )
   where
      cast(getdate() as date) between p.in_date and p.out_date
)
select * from tab_cte order by full_name, in_date, date_trans
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: ШКК (Штатно-Кадровый контур) Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU