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,
Pessoal estou com uma atividade para identificar a ausência de batida de ponto dos empregados, no exemplo abaixo o empregado não bateu o ponto no dia 4, é possível fazer uma consulta pra identificar o dia da ausência?
MAT | DATA
009042 2018-08-01 07:50:00.000
009042 2018-08-01 14:00:00.000
009042 2018-08-02 07:50:00.000
009042 2018-08-02 14:05:00.000 <<<
009042 2018-08-03 07:51:00.000 <<<
009042 2018-08-03 14:02:00.000
009042 2018-08-05 07:50:00.000
009042 2018-08-05 14:03:00.000
009042 2018-08-06 07:52:00.000
009042 2018-08-06 14:02:00.000
Uma outra maneira de você pegar as faltas do mês corrente seria:
SELECT x1.number
FROM [dbo].[Ponto] p1
RIGHT JOIN
--retorna os dias do mês corrente
(SELECT
(CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR) + '-01' AS DATETIME) + Number) number
FROM master..spt_values
WHERE type = 'P'
AND
(CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR) + '-01' AS DATETIME) + Number )
<
DATEADD(mm,1,CAST(CAST(YEAR(GETDATE()) AS VARCHAR) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR) + '-01' AS DATETIME) )) X1 ON CAST(CAST(X1.number AS DATETIME) AS DATE) = CAST(CAST(p1.[DATA] AS date) AS DATETIME)
where p1.[DATA] is null --pega somente os que não estão na tabela ponto
and CAST(X1.[number] as datetime) <= CAST(GETDATE() AS DATETIME) --pega somente as datas anteriores ou iguais a data atual
Meio vago pois falta o modelo de dados , dias esperados x realizados.
Todavia peswuisa por NOT EXISTS , pode te ajudar.