Crystal Reports - формула активного сотрудника - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь сделать отчет, который дает «активный снимок» за последний месяц. Например - сколько активных женщин работает в октябре?

Дата (определенный месяц) для активного снимка изменится. Я использую следующие поля в своей формуле employee.hire_date - это дата, с которой сотрудник начал работать в нашей организации, employee.term_date - это дата окончания занятости.

Затем я группирую сотрудников по полу и использую employee.gender, а затем employee.name

Что вы, ребята, думаете об этой логике? Значение employee.hire_date может быть в любое время в этом месяце минус последний день? Значение employee.term_date может быть в любое время в течение этого месяца минус последний день? Я говорю минус последний день, потому что работник должен был работать как минимум 1 день в течение месяца. Я в тупике ....

Затем создайте формулу и установите параметры первого и последнего числа месяца?

1 Ответ

0 голосов
/ 12 января 2019

Я думаю, что вы в правильном направлении, и это может помочь, если я скажу, что вам нужно подходить к 6 различным ситуациям в течение данного месяца. Дело в том, что существует пересечение между рабочим периодом работника и данным месяцем.

Предположим:

  • ч - дата проката
  • T это термин_дата
  • m - первый день данного месяца
  • M - последний день данного месяца

См. Эти «временные шкалы»: (извините, немного сбивает с толку)

h..T..m........M...... (1- start and end before the month, no intersection) 
......m..h..T..M...... (2- start and end inside the month, there is intersection) 
......m........M..h..T (3- start and end after the month, no intersection) 
h.....m........M.....T (4- start before the month, end after the month, intersection)
h.....m....T...M...... (5- start before the month, end inside the month, intersection) 
......m...h....M.....T (6- start inside the month, end after the month, intersection)

Итак, есть пересечение, если h <= M и T> = m (ура, карта Карно!).

Чтобы проигнорировать последний день, как вы сказали, возможно, это будет: h m.

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

РЕДАКТИРОВАТЬ: Может быть, полная формула должна быть:

{EMPLOYEE.Hire_Date}<={?Last of Month} and (
  isnull({EMPLOYEE.Termination_Date}) OR 
  {EMPLOYEE.Termination_Date}>={?First of Month}
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...