Ir para conteúdo

Arquivado

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

Matheus Santos

Como agrupar registros quando possuo todos os campos iguais exceto 1

Recommended Posts

Bom dia Pessoal sou novo aqui no grupo, estou com um problema relacionado a agrupamentos de registros:

 

Tenho a seguinte consulta:

 

select pontos.pis,pontos.data,pontos.hora,pontos.funcionario_id,funcionarios.nome,funcionarios.departamento FROM pontos
INNER JOIN funcionarios on pontos.pis = funcionarios.pis where data between '2014-04-08' and '2014-04-08'
and pontos.funcionario_id= '90580' order by pontos.data
Essa consulta retorna todas as batidas de ponto referente a esse dia:
PIS data hora func_id nome departamento
20172975217 2014-04-08 07:06:00 90580 MATHEUS DA SILVA SANTOS TECNOLOGIA INFORMACAO / AM
20172975217 2014-04-08 16:53:00 90580 MATHEUS DA SILVA SANTOS TECNOLOGIA INFORMACAO / AM

 

Eu gostaria que a mesma retornasse apenas 1 registro com uma coluna a mais ou seja hora inicial e final tipo assim:
PIS data hora1 hora2 func_id nome departamento
201729752 2014-04-08 07:06:00 16:53:00 90580 MATHEUS DA SILVA SANTOS TECNOLOGIA INFORMCAO / AM

Compartilhar este post


Link para o post
Compartilhar em outros sites
Tenta assim:
SELECT p.pis AS PIS, p.data AS data, MIN( p.hora ) AS hora1, MAX( p.hora ) AS hora2, p.funcionario_id AS func_id, f.nome AS nome, f.departamento AS departamentoFROM pontos p
INNER JOIN funcionarios f ON p.pis = f.pis
WHERE data BETWEEN '2014-04-08' AND '2014-04-08' AND p.funcionario_id= '90580'
GROUP BY p.pis, p.data
ORDER BY p.data ASC

Teoricamente agora e traz o primeiro registro do dia e o último, mas não traz nada entre um e outro, se o funcionário bater o ponto para ir almoçar, por exemplo, o campo 'hora2' ficará com o maior horário...

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.