Jump to content
newallan

Preciso identificar o dia em que não houve registro no banco

Recommended Posts

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

Share this post


Link to post
Share on other sites

Meio vago pois falta o modelo de dados , dias esperados x realizados.

Todavia peswuisa por NOT EXISTS , pode te ajudar.

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By c3s1nha
      Boa tarde,
       
      Preciso restaurar a estrutura de um banco de dados (tabelas,views,procedures.. etc) em outro banco de dados que esta vazio (nao tem tabela nenhuma, banco novo), utilizo o sql server. Consigo fazer utilizando o SSMS ?
      Desde ja agradeço. 
    • By c3s1nha
      Boa tarde,
      Gostaria de somar os valores das colunas D, D1, V1, V2, V3, V4 no final da tabela, é possivel ?
       
      Estou utilizando a seguindo query:
       
      SELECT
      CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103) As [Data],           
      COUNT(DISTINCT Discos.Pessoa_lng_Codigo) as [D], 
      COUNT(Discos.Discos_lng_Sequencia) AS [D1], 
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor), 2)))), '.', ',') as [V1],
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V2],
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(Sum (Discos.Discos_mon_Tarifa), 2)))), '.', ',') As [V3],
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V4]  
      FROM Discos
      Group By Discos.Discos_sdt_Data
      Having (((Discos.Discos_sdt_Data) Between '2019-01-01' And '2019-01-10'))
      Order By [D]
       
      Com este codigo consigo a somatorio conforme imagem, porem, queria adicionar um a somatoria total no final das colunas.

       
       
      Por favor, poderiam me ajudar.
    • By Fábão Ramos
      Boa tarde Pessoal!! estou com um problema que acho que sou o único com este mesmo problema kkkk pois procurei em tudo que foi lugar um esclarecimento de como resolver e nada.
      Bom vamos ao que importa.
      tenho um formulário em metodo post que será auto preenchido depois que eu conseguir aplicar o que tenho a duvida.
       
      <form action="caixa.php" method="post">
      <B>Selecione a Refeição:</B><br>
      <input type=checkbox name="pratos[]" value="Feijão"> Feijão<br>
      <input type=checkbox name="pratos[]" value="Arroz"> Arroz<br>
      <input type=checkbox name="pratos[]" value="Fritas"> Fritas<br>
      <input type=checkbox name="pratos[]" value="Farofa"> Farofa<br>
      <input type=checkbox name="pratos[]" value="Bife"> Bife<br>
      <input type=checkbox name="pratos[]" value="frango"> frango<br>
      <input type=checkbox name="pratos[]" value="ovo"> ovo<br>
      <input type=checkbox name="pratos[]" value="Churrasco"> Churrasco<br><BR>
      <input type=submit>
      </form>
      <?php
      $pratos = isset($_POST['pratos']) ? $_POST['pratos'] : '';    
      if(!$pratos!="Registrar")
      {
      // Verifica se usuário escolheu algum número
      if(isset($_POST["pratos"]))
      {
         foreach($_POST["pratos"] as $complemento)
          {
              echo "- " . $complemento . "<BR>";
          }
          
      }
      else
      {
          echo "Você não escolheu Seu Prato ainda!<br>";
      }}
      ?>
      esta meio zuado pq sou bem novato mais esta funcionando o resultado do "checkbox" esta vindo só que separadamente preciso unir os dados pois a aplicação dele será imput em sql server para que os pedidos ja saiam no monitor dentro da cozinha com as opções escolhidas sei que não é muito difícil colocar " $complemento[0].$complemento[1].$complemento[2] etc.. pelo que vi seria mais ou menos assim que eu agruparia o valor mais existe um problema o Form será auto preenchido por uma busca em sql server pois existe feijão preto feijão branco feijão mulatinho etc... e ter que preencher isso tudo sem nem ao menos saber se vai ter este prato no dia é bem inviável e a qtd de linhas será absurda então preciso agrupar o resultado para aplicar o envio do mesmo para o sql server indiferente das opções escolhidas se puderem me ajudar agradeço.
       
      este é o mesmo arquivo esta mostrando o resultado onde cadastra só para ficar mais rápido o desenvolvimento caixa.php
    • By gei
      Boa noite.
      Tenho um display que deverá exibir produtividade de alguns setores por dia, Mês, e retornar o percentual de meta de acordo com os valores dos dias, semanas e meses.
      O total diário está tranquilo mas, como retornar o total  semanal, mensal e percentual alcançado?
      Estou há mais de uma semana tentando resolver.
      Estou usando o SQLSERVER 2017.
      Se alguém puder ajudar agradeço.
       
      SELECT REGISTRO_ATENDIMENTO_INTERNO_PSP.UsuarioInsert, DEPARTAMENTOS.NomeDepartamento,
      COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Diário", COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Semanal", COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Mensal" FROM REGISTRO_ATENDIMENTO_INTERNO_PSP  INNER JOIN DEPARTAMENTOS  ON REGISTRO_ATENDIMENTO_INTERNO_PSP.IdDepartamento=DEPARTAMENTOS.IdDepartamento INNER JOIN COLABORADOR ON REGISTRO_ATENDIMENTO_INTERNO_PSP.IdFunc=COLABORADOR.IdFunc where convert(char(10),DataAtendimento,103) = convert(char(10),getdate(),103) GROUP BY REGISTRO_ATENDIMENTO_INTERNO_PSP.UsuarioInsert, DEPARTAMENTOS.NomeDepartamento 
    • By Robson Freitas
      Tenho uma tabela de cadastro do SQL Server, tenho uma coluna que apresenta o status desse cadastro ('A','I','S','C').
       
      Criei um campo com nome Update_data, que receberá um datatime toda vez que o cliente alterar o status do cadastro. Isso também vale para um insert.
       
      Estou com dúvidas, pois nunca criei uma Trigger em sql server.
       
      Ex: da minha tabela
       ID | Processo | status | Update_data
        1 | A33      | A      | null
      2   | A34      | I      | null
      3    | A55      |     A | null
       
      Não consegui avançar no seguinte exemplo abaixo trigger: 
      CREATE TRIGGER atualizaData
      ON cadastro
      AFTER INSERT,UPDATE
      AS
      IF INSERT OR UPDATE(status)
      BEGIN
      UPDATE cadastro SET Update_data = GETDATE()
      WHERE id = id_que_foi_modifica/inserida
      END
       
      Ao final, será atualizado com a data atual somente se houver modificação ou inserção no campo da situação.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.