none
Quantidade de Funcionários Ativos RRS feed

  • Pergunta

  • Bom dia!

    Estou novamente precisando da ajuda de vocês.
    Preciso de um sql que mostre a quantidade de funcionários ativos por mês.
    Acontece que apenas dando um select cont(*) from funcionarios where  datademiss = '' não funciona.
    Trabaho com o um sistema que permite que se simule uma rescisão e ele armazena essa data dentro da tabela mesmo o funcionário não sendo demitido.

    Acontece que para que um funcionário seja realmente demitido ele tem que estar com o status 'S' e esse campo está em outra tabela onde armazena apenas os funcionários realmente demitidos

    Tentei ela elaborar um select assim porém mesmo assim não está trazendo a quantidade correta.

    (SELECT cont(*) FROM funcionarios T

    LEFT JOIN demissao_efetivada G ON G.FILIAL = T.FILIAL AND G.MAT = T.MAT

    WHERE  (T.data_Admissao <= '20160930')AND  (G.RG_DATADEM > '20160901' OR G.RG_DATADEM = '' )   

    AND  G.status_dem_efetivada= 'S' AND T.D_E_L_E_T_ <> '*'AND G.D_E_L_E_T_ <> '*' )


    Alguém poderia me ajudar?Preciso que esse select me mostre os funcionários ativos no mês em que eu informar.

    terça-feira, 20 de setembro de 2016 14:28

Respostas

  • Olá Carine,

    Veja o procedimento abaixo.

    SELECT 
    	count (t.MAT) as total  
    FROM 
    	funcionarios T
    where not exists 
    	(
    		select top 1 G.FILIAL from demissao_efetivada G where G.FILIAL = T.FILIAL AND G.MAT = T.MAT and G.status_dem_efetivada= 'S' AND G.D_E_L_E_T_ not like '*'
    	)
    
    	and Month(T.data_Admissao)=month('20160930') and  Year(T.data_Admissao)=Year('20160930')
    	and T.D_E_L_E_T_ not like '*' 
    Abraços


    Ricardo Lacerda



    terça-feira, 20 de setembro de 2016 15:16

Todas as Respostas

  • O campo RG_DATADEM é do tipo datetime?

    Se for, o correto ¸comparar com Null e nao com vazio.

    SELECT cont(*) FROM funcionarios T 
    LEFT JOIN demissao_efetivada G ON G.FILIAL = T.FILIAL AND G.MAT = T.MAT
    WHERE  (T.data_Admissao <= '20160930')AND  (G.RG_DATADEM > '20160901' OR G.RG_DATADEM is null )    
    AND  G.status_dem_efetivada= 'S' AND T.D_E_L_E_T_ <> '*'AND G.D_E_L_E_T_ <> '*'

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 20 de setembro de 2016 14:33
  • Todos os campos desse banco são do tipo texto.

    Mesmo eu alterando, colocando  G.RG_DATADEM is null ele não me traz o valor correto.

    É como se ele trouxesse apenas todos os demitidos.


    • Editado carine.couto terça-feira, 20 de setembro de 2016 14:48 ajuste resposta
    terça-feira, 20 de setembro de 2016 14:38
  • Bom dia,

    Carine, experimente colocar a coluna G.status_dem_efetivada dentro do Count no lugar do *.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 20 de setembro de 2016 15:02
  • Todos os campos desse banco são do tipo texto.

    Mesmo eu alterando, colocando  G.RG_DATADEM is null ele não me traz o valor correto.

    É como se ele trouxesse apenas todos os demitidos.


    Sim.. Sua query traz somente os demitidos porque voce filtra   G.status_dem_efetivada= 'S'  (pelo que eu entendi isso é verdade somente para os demitidos)

    Se voce quer somente os ativos, entao na verdade voce tem que buscar o que nao é status S

    G.status_dem_efetivada<> 'S' 

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    terça-feira, 20 de setembro de 2016 15:08
  • Olá Carine,

    Veja o procedimento abaixo.

    SELECT 
    	count (t.MAT) as total  
    FROM 
    	funcionarios T
    where not exists 
    	(
    		select top 1 G.FILIAL from demissao_efetivada G where G.FILIAL = T.FILIAL AND G.MAT = T.MAT and G.status_dem_efetivada= 'S' AND G.D_E_L_E_T_ not like '*'
    	)
    
    	and Month(T.data_Admissao)=month('20160930') and  Year(T.data_Admissao)=Year('20160930')
    	and T.D_E_L_E_T_ not like '*' 
    Abraços


    Ricardo Lacerda



    terça-feira, 20 de setembro de 2016 15:16
  • Muito Obrigada !
    quinta-feira, 22 de setembro de 2016 12:07