Como identificar o conflito entre as datas de férias dos funcionários e contabilizar a quantidade de dias em que os mesmos estão em conflito
1. Criar tabela de constantes (VALUES):
A cláusula VALUES é usada para criar uma tabela de constantes no SQL Server. Pode ser útil para fornecer conjuntos de valores específicos em uma consulta.
Exemplo:
SELECT * FROM (VALUES (1, 'Valor1'), (2, 'Valor2'), (3, 'Valor3')) AS TabelaExemplo (Coluna1, Coluna2);
2. Contar quantidade de dias entre datas (DATEDIFF, DAY):
A função DATEDIFF é usada para calcular a diferença entre duas datas em unidades específicas, como dias. O exemplo abaixo conta a quantidade de dias entre duas datas.
SELECT DATEDIFF(DAY, DataInicio, DataFim) AS QuantidadeDias FROM TabelaExemplo;
3. Converter tipo de dados texto para data (CAST, DATETIME):
A função CAST é usada para converter um tipo de dados para outro. Neste caso, estamos convertendo uma string em uma data.
SELECT CAST('2023-01-01' AS DATETIME) AS DataConvertida;
4. Comparar valores entre os registros (CROSS APPLY):
A cláusula CROSS APPLY pode ser usada para aplicar uma subconsulta a cada linha do conjunto de resultados principal, permitindo a comparação entre valores de registros diferentes.
SELECT A.Coluna1, B.Coluna2 FROM TabelaA A CROSS APPLY (SELECT TOP 1 Coluna2 FROM TabelaB WHERE Coluna1 = A.Coluna1) AS B;
5. Expressão de tabela Comum (CTE):
A Expressão de Tabela Comum (CTE) é uma forma de criar uma tabela temporária dentro de uma consulta. Pode ser referenciada várias vezes na mesma consulta.
WITH CTEExemplo (Coluna1, Coluna2) AS ( SELECT Col1, Col2 FROM TabelaOrigem WHERE Condicao ) SELECT * FROM CTEExemplo;
6. Identificar férias e contar dias em conflito (CASE, WHEN, DATEDIFF):
O uso de CASE e WHEN permite a identificação de férias ou dias específicos para contagem de dias em conflito.
SELECT *, CASE WHEN DataInicio BETWEEN '2023-01-01' AND '2023-01-10' THEN 'Férias' ELSE 'Trabalho' END AS StatusDia FROM TabelaExemplo;
7. Filtrar registros (WHERE, CONDITIONAL):
A cláusula WHERE é utilizada para filtrar registros com base em condições específicas. O exemplo a seguir filtra registros onde uma condição é atendida.
SELECT * FROM TabelaExemplo WHERE Coluna1 > 10;
Esses conceitos no SQL Server proporcionam uma variedade de funcionalidades, desde a manipulação de dados até a aplicação de lógicas condicionais e a criação de estruturas temporárias para facilitar consultas mais complexas.
Cientista de Dados e Consultor de Soluções Digitais e Analíticas
@fabioms