Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, direto ao ponto, tenho uma tabela onde registro a jornada de trabalho dos funcionários.
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
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?
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
Combine funções de data.aspx) com o uso do PIVOT.aspx).
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?
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?
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.
Dá uma indentada neste post.