Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kelvim

retirar tabela de frequencia

Recommended Posts

Bom dia, direto ao ponto, tenho uma tabela onde registro a jornada de trabalho dos funcionários.

Capturar23c48.png

http://ap.imagensbrasil.org/image/giC2LR

Dessa tabela preciso tirar um relatório por hora e dia da semana, com o seguinte formato

por exemplo, quantos funcionários estão presentes segunda-feira as 7:00, e as 7:30, e as 8:00

Capturar20def7.png

http://ap.imagensbrasil.org/image/giC6pG

minha dúvida é, qual a forma mais adequada de fazer isso?

como separar a coluna por horário a cada meia hora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma indentada neste post.

Coloquei imagem, fica mais fácil, eu tinha colado tabela, achei que fosse com formato de tabela :D mas agora acho que dá para entender

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

O PIVOT¨vai me ajudar e muito mais pra frente, mais ainda estou com problema iniciais.

Tem como eu verificar, por exemplo, quem estava presente na segunda entre 7 e 7:30?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer isso,

SELECT 
	diaSemana, 
	count(NumSIAPEServidor) AS '07:00'
	
FROM ESCALA_TRABALHO 
WHERE (
	('07:00' >= Entrada_1 AND '07:30' < Saida_1) 
	OR ('07:00' >= Entrada_2 AND '07:30' < Saida_2) 
	OR ('07:00' >= Entrada_3 AND '07:30' < Saida_3)
)

GROUP BY diaSemana

que traz o retorno assim

diaSemana 07:00

2 2
4 2
5 1
preciso adicionar na consulta 7:30 - 8:00 - 8:30 ..
Tenho que adicionar isso hora a hora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui, depois de um dia inteiro quebrando a cabeça kkk

se alguém mais tiver algum problema semelhante segue o SQL usado

--DECLARE @SUPERINTENDECIA INT = 0;
DECLARE @HORARIO TIME;
DECLARE @SERVIDOR TABLE(dia int, qtd INT);
DECLARE @TabelaCargaHoraria TABLE (horario TIME, domingo INT, segunda INT, terca INT, quarta INT, quinta INT, sexta INT, sabado INT)
SET @HORARIO = '00:00';

WHILE (@HORARIO) < '23:00'
BEGIN  
	insert into @SERVIDOR
	SELECT 
		DiaSemana,
		count(NumSIAPEServidor)
	
	FROM ESCALA_TRABALHO 
	WHERE (
		(@HORARIO >= Entrada_1 AND DATEADD(MINUTE, 30, @HORARIO) < Saida_1) 
		OR (@HORARIO >= Entrada_2 AND DATEADD(MINUTE, 30, @HORARIO) < Saida_2) 
		OR (@HORARIO >= Entrada_3 AND DATEADD(MINUTE, 30, @HORARIO) < Saida_3) 
	)

	GROUP BY diaSemana;

	INSERT INTO @TabelaCargaHoraria 
	(
		horario,
		domingo,
		segunda,
		terca,
		quarta,
		quinta,
		sexta,
		sabado
	)
	values
	(
		@HORARIO,
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 1),
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 2),
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 3),
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 4),
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 5),
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 6),
		(SELECT SUM(qtd) FROM @SERVIDOR WHERE dia = 7)
	)
	DELETE FROM @SERVIDOR
	SET @HORARIO = DATEADD(MINUTE, 30, @HORARIO);

END

SELECT * FROM @TabelaCargaHoraria

Obrigado Motta, pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.