Amigo eu uso a consulta abaixo em uma planilha para verificar as marcações dos funcionários
acho que é um inicio para o que você está precisando.
Espero ter lhe ajudado.
SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) /60) as varchar))) + cast((SUM(BATIDA1) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) %60) as varchar))) + cast((SUM(BATIDA1) %60) as varchar) as BATIDA1,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) /60) as varchar))) + cast((SUM(BATIDA2) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) %60) as varchar))) + cast((SUM(BATIDA2) %60) as varchar) as BATIDA2,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) /60) as varchar))) + cast((SUM(BATIDA3) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) %60) as varchar))) + cast((SUM(BATIDA3) %60) as varchar) as BATIDA3,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) /60) as varchar))) + cast((SUM(BATIDA4) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) %60) as varchar))) + cast((SUM(BATIDA4) %60) as varchar) as BATIDA4,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) /60) as varchar))) + cast((SUM(BATIDA5) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) %60) as varchar))) + cast((SUM(BATIDA5) %60) as varchar) as BATIDA5,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) /60) as varchar))) + cast((SUM(BATIDA6) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) %60) as varchar))) + cast((SUM(BATIDA6) %60) as varchar) as BATIDA6,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) /60) as varchar))) + cast((SUM(BATIDA7) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) %60) as varchar))) + cast((SUM(BATIDA7) %60) as varchar) as BATIDA7,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) /60) as varchar))) + cast((SUM(BATIDA8) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) %60) as varchar))) + cast((SUM(BATIDA8) %60) as varchar) as BATIDA8,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) /60) as varchar))) + cast((SUM(BATIDA9) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) %60) as varchar))) + cast((SUM(BATIDA9) %60) as varchar) as BATIDA9,
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) /60) as varchar))) + cast((SUM(BATIDA10) /60) as varchar)+ ':' +
REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) %60) as varchar))) + cast((SUM(BATIDA10) %60) as varchar) as BATIDA10
FROM (SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA,
CASE WHEN NRO=1 THEN BATIDA ELSE 0 END BATIDA1,
CASE WHEN NRO=2 THEN BATIDA ELSE 0 END BATIDA2,
CASE WHEN NRO=3 THEN BATIDA ELSE 0 END BATIDA3,
CASE WHEN NRO=4 THEN BATIDA ELSE 0 END BATIDA4,
CASE WHEN NRO=5 THEN BATIDA ELSE 0 END BATIDA5,
CASE WHEN NRO=6 THEN BATIDA ELSE 0 END BATIDA6,
CASE WHEN NRO=7 THEN BATIDA ELSE 0 END BATIDA7,
CASE WHEN NRO=8 THEN BATIDA ELSE 0 END BATIDA8,
CASE WHEN NRO=9 THEN BATIDA ELSE 0 END BATIDA9,
CASE WHEN NRO=10 THEN BATIDA ELSE 0 END BATIDA10
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A.CHAPA, B.DATA ORDER BY A.CHAPA, B.DATA, B.BATIDA) NRO,
A.CHAPA, P.NOME, P.CODSECAO, A.CODPARCOL, F.NOME FUNCAO, B.DATA, B.BATIDA
FROM ABATFUN B, PFUNC P, APARFUN A, PFUNCAO F
WHERE P.CODCOLIGADA=B.CODCOLIGADA
AND P.CHAPA=B.CHAPA
AND P.CODFUNCAO=F.CODIGO
AND P.CODCOLIGADA=F.CODCOLIGADA
AND A.CHAPA=P.CHAPA
AND A.CODCOLIGADA=P.CODCOLIGADA
AND B.DATA between :PLN_B4_D and :PLN_B5_D
AND B.BATIDA IS NOT NULL
AND P.CODSITUACAO<>'D'
AND A.CODPARCOL IN ('0004','0005') ) TABELA ) TABELAO
GROUP BY CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA
ORDER BY CHAPA