NIK Postado Outubro 27, 2010 Denunciar Share Postado Outubro 27, 2010 Ola PessoalGostaria de fazer o seguinte...Tenho uma tabela com funcionários e gostaria de saber qual a quantidade mensal nesse ano, conforme abaixomes-------jan---------fev--------mar-----------abr ...total-------120--------127--------115----------121 ...Todas as informações que preciso está nessa tabela de funcionários, data de admissão, data de demissão (caso tenha), porém, não estou sabendo fazer a sentença.Se alguém puder me ajudar...ObrigadoNIK Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Outubro 27, 2010 Denunciar Share Postado Outubro 27, 2010 Boa tarde NIK, Segue um exemplo de como pode fazer o script. Espero que ajude... :.) OBS.: Caso queira alterar os meses de 1, 2, 3, etc, para jan, fev, mar, etc, poderá utilizar um CASE.CREATE TABLE #Dados (DATA DATETIME, CodFunc int) insert INTO #Dados VALUES ('2010-01-01', 1) insert INTO #Dados VALUES ('2010-02-01', 2) insert INTO #Dados VALUES ('2010-01-01', 3) insert INTO #Dados VALUES ('2010-03-01', 4) insert INTO #Dados VALUES ('2010-03-01', 5) SELECT count(CodFunc) QtdaFunc, DATEPART(MONTH, data) Mes FROM #Dados GROUP BY (DATEPART(MONTH, data)) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 NIK Postado Outubro 27, 2010 Autor Denunciar Share Postado Outubro 27, 2010 Fulvio... belezaNesse caso não dá certo pelo seguinte detalhena minha tabela tem gente que está registrado antes de 2010.Veja esse exemplo abaixo funcionario......data admissao........datademissaoJoão...............01/05/2007.................vazio........Pedro.............27/03/2009.................vazio........Maria..............05/09/2008..............01/04/2010..Alberto............04/03/2006.................vazio........Carlos.............01/01/2010..............05/07/2010..Sebastião.........03/03/2010.................vazio.......Veja só nesse ex acima... temos 4 funcionários que até jan/10 estavam empregados (João,Pedro,Maria,Alberto)+ 1 funcionario contratado em jan/10 (Carlos) somando total de 5 funcionarios em jan/10Feveiro = 5, marco = 5Em abr/10 foi demitido um func (Maria) - ficando um total de 4 funcionarios + foi contratado o Sebastião ficando total de 5.Em maio = 5, junho = 5Em julho foi demitido um func (Carlos) - ficando um total de 4 funcionarios.. e assim por diante.Preciso fazer isso acontecer.ValeuNIK Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Outubro 28, 2010 Denunciar Share Postado Outubro 28, 2010 Bom dia NIK, Ok, entendido. Mas aí você terá q ter uma data de referência, igual colocou no exemplo. Esta data será fornecida pelo usuário? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 NIK Postado Outubro 28, 2010 Autor Denunciar Share Postado Outubro 28, 2010 Fulvio... não necessáriamente, como irei trabalhar com o ano em vigência, trago as informações quebradas por mes daquele ano.Bom dia NIK, Ok, entendido. Mas aí você terá q ter uma data de referência, igual colocou no exemplo. Esta data será fornecida pelo usuário? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Outubro 29, 2010 Denunciar Share Postado Outubro 29, 2010 Bom dia NIK, Assim fica mais complexo.... rs. Então a data de referência será o ultimo dia de cada mês do ano corrente. Postei um exemplo logo abaixo. Uma observação: no mês 3 serão 6 funcionários "ativos" na empresa. O Sebastião foi contratado no mês 3 e não no mês 4, ok?CREATE TABLE #Dados (Funcionario VARCHAR(20), Data_Admissao DATETIME, Data_Demissao DATETIME) CREATE TABLE #Total (Mes INT, Total INT) insert INTO #Dados VALUES ('Joao', '2007-05-01', NULL) insert INTO #Dados VALUES ('Pedro', '2009-03-27', null) insert INTO #Dados VALUES ('Maria', '2008-09-05', '2010-04-01') insert INTO #Dados VALUES ('Alberto', '2006-03-04', null) insert INTO #Dados VALUES ('Carlos', '2010-01-01', '2010-07-05') insert INTO #Dados VALUES ('Sebastiao', '2010-03-03', null) -- Conferência SELECT * FROM #Dados -- Loop DECLARE @Mes INT DECLARE @Dia INT SET @Mes = 1 WHILE @Mes <= 12 BEGIN IF @Mes = 2 Set @Dia = 28 ELSE Set @Dia = 30 INSERT INTO #Total SELECT @Mes, ( SELECT COUNT(Funcionario) FROM #Dados WHERE Data_Demissao is NULL AND Data_Admissao <= ('2010-' + CAST(@Mes AS VARCHAR) +'-'+ CAST(@Dia AS VARCHAR))) + (SELECT COUNT(Funcionario) FROM #Dados WHERE Data_Demissao is not NULL and Data_Demissao > ('2010-' + CAST(@Mes AS VARCHAR) +'-'+ CAST(@Dia AS VARCHAR))) SET @Mes = @Mes + 1 END -- Conferência select * from #Total Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 NIK Postado Novembro 9, 2010 Autor Denunciar Share Postado Novembro 9, 2010 Valeu Fulvio.... arrebentou ^_^ []'sNIK Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
NIK
Ola Pessoal
Gostaria de fazer o seguinte...
Tenho uma tabela com funcionários e gostaria de saber qual a quantidade mensal nesse ano, conforme abaixo
mes-------jan---------fev--------mar-----------abr ...
total-------120--------127--------115----------121 ...
Todas as informações que preciso está nessa tabela de funcionários, data de admissão, data de demissão (caso tenha),
porém, não estou sabendo fazer a sentença.
Se alguém puder me ajudar...
Obrigado
NIK
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.