4 Replies Latest reply: Dec 1, 2017 1:35 PM by Thalita Capuano RSS

    Turn Over

    Thalita Capuano

      Boa tarde,

       

      Gostaria de uma ajuda...

      Preciso da quantidade total que tinha de funcionários ativos no mês, pois o sistema só me da a quantidade atual na data de hoje.

      Tenho como ajuda a data de admissão, e a data de demissão de funcionários, porem os ativos só me da na data atual e pra fazer o turn over preciso do historico... quantos tinham naquele determinado mês.

       

      Alguem pode me ajudar??

       

      Obrigada!!

        • Re: Turn Over
          Jacy felipe

          Você pode fazer de duas formas, criando os dados na base ou via set analise.

          Segue script:

           

           

          //Criação de Período para filtro

          Periodo_Filtro_TMP:

          LOAD * Inline [

          Ano

          1964

          1971

          1972

          1973

          1974

          1976

          1977

          1978

          1979

          1980

          1981

          1982

          1983

          1984

          1985

          1986

          1987

          1988

          1989

          1990

          1991

          1992

          1993

          1994

          1995

          1996

          1997

          1998

          1999

          2000

          2001

          2002

          2003

          2004

          2005

          2006

          2007

          2008

          2009

          2010

          2011

          2012

          2013

          2014

          2015

          2016

          2017

          2018

          2019

          2020

          2021

          2022

          2023

          2024

          2025

          2025

          2025

          2025

          2025

          ];

           

           

          Join(Periodo_Filtro_TMP)

           

           

          LOAD * Inline [

          Mes

          01

          02

          03

          04

          05

          06

          07

          08

          09

          10

          11

          12

          ];

           

           

          join(Periodo_Filtro_TMP)

           

           

          load * Inline [

          Dia

          1

          2

          3

          4

          5

          6

          7

          8

          9

          10

          11

          12

          13

          14

          15

          16

          17

          18

          19

          20

          21

          22

          23

          24

          25

          26

          27

          28 

          29

          30

          31

          ];

           

           

           

           

          NoConcatenate

           

           

          // >>>>>>> Criação de períodos para ativos

          PERIODO:

          load Distinct

          MonthName(makedate(Ano,Mes,Dia)) AS dPERIODO_TURNOVER

          Resident Periodo_Filtro_TMP

          Where Ano<= Year(Today()) and MonthName(makedate(Ano,Mes,Dia)) <= MonthName(Today());

           

           

          DROP Table Periodo_Filtro_TMP;

           

          join (PERIODO)

           

           

          LOAD

            %CHAVE_COLABORADOR,

            monthname(dDAT_ADMIS)    AS dPERIODO_ADMIS,

            monthname(dDAT_DEMIS)    AS dPERIODO_DEMIS,

            nSITUACAO_FUNC,

            cTIPO_CONTRATO

          FROM $(vPathTransformados)tFuncionario.qvd (qvd)

          Where (nSITUACAO_FUNC = 'Demitido' and  len(dDAT_DEMIS) > 0) or (nSITUACAO_FUNC <> 'Demitido');

           

          NoConcatenate

           

           

          PERIODOS_TURNOVER:

          load

          *

          Resident PERIODO

          where dPERIODO_TURNOVER >= dPERIODO_ADMIS  

          AND (if(len(dPERIODO_DEMIS)= 0 ,dPERIODO_TURNOVER <= MonthName(Today()),dPERIODO_TURNOVER <=dPERIODO_DEMIS )); // >>>>>> Criando calendário apenas com ativos nos períodos

           

           

          DROP Table PERIODO;

           

           

          DROP Field dPERIODO_ADMIS, dPERIODO_DEMIS FROM PERIODOS_TURNOVER;

           

           

          // >>>>>>> Incluindo Periodos de admissão

          Left JOIN(PERIODOS_TURNOVER)

          LOAD

          %CHAVE_COLABORADOR,

            monthname(dDAT_ADMIS)      AS dPERIODO_TURNOVER,

              '1'      AS cFLAG_ADMISSAO

          FROM $(vPathTransformados)tFuncionario.qvd (qvd);

           

           

          // >>>>>>> Incluindo Periodos de Demissão 

          Left JOIN(PERIODOS_TURNOVER)

          LOAD

          %CHAVE_COLABORADOR,

            monthname(dDAT_DEMIS)    AS dPERIODO_TURNOVER,

            '1' AS cFLAG_DEMISSAO

          FROM $(vPathTransformados)tFuncionario.qvd  (qvd);

           

          NoConcatenate

           

           

          PERIODOS_TURNOVER_TMP:

          LOAD

          %CHAVE_COLABORADOR,

          dPERIODO_TURNOVER,

               nSITUACAO_FUNC, 

               cFLAG_ADMISSAO,

               cTIPO_CONTRATO,

               cFLAG_DEMISSAO

          Resident PERIODOS_TURNOVER;

          DROP Table PERIODOS_TURNOVER;

           

          Via set analisys você pode criar os períodos de analise em uma tabela separada e contar os funcionários em que a data de adm <= data_analise<= data demissão

           

          Aguardo, eu resolvi meu problema usando o primeiro


           

          • Re: Turn Over
            Alessandro Furtado

            Thalita,

             

            penso que a melhor saida seria usar o iterno() tendo a data de admissao e de demissao como intervalos (se nao tiver data de demissão seria o today()).

             

            Assim, mes a mes vais ter quem estava ativo.

             

            Segue um exemplo similar........