Ir para conteúdo
Fórum Script Brasil
  • 0

Calcular Horas de atendimento para resultados específicos


Leonardo JSantos

Pergunta

Boa tarde,

Eu tenho um código SQL onde eu estou marcando com 1,2 e 3 determinando a quantidade de tempo entre a O.S.s , mas gostaria de adicionar a soma dessas marcações em seus respectivos campos . Tipo, Quantidade até 1 hora = 9 , 2 horas = 2 e superior a 2 horas = 4. Alguém poderia me ajudar? Desde já agradeço.

 

 

 
 SELECT    
          
        ORDSERV.TAG AS'OS',
         ORDSERV.DATPRO2,
         ORDSERV.MAQPAR,
         TIPMANUT.DESCRICAO,  
 
       SUM(DATEDIFF(SS,(CASE WHEN  ORDSERV.DATPRO < ORDSERV.MAQPAR
                       THEN  DATPRO
                       ELSE  ORDSERV.DATPRO
                       END),
                       (CASE WHEN  ORDSERV.DATPRO > ORDSERV.MAQPAR
                       THEN  MAQPAR
                       ELSE  ORDSERV.MAQPAR
                       END)))/3600.0  'H_ATEND', 
                       (CASE 
                                    WHEN SUM(DATEDIFF(SS,(CASE WHEN  ORDSERV.DATPRO < ORDSERV.MAQPAR
                       THEN  DATPRO
                       ELSE  ORDSERV.DATPRO
                       END),
                       (CASE WHEN  ORDSERV.DATPRO > ORDSERV.MAQPAR
                       THEN  MAQPAR
                       ELSE  ORDSERV.MAQPAR
                       END)))/3600.0 < 60  THEN 1 ELSE 0 END)'1HORA',
                                  (CASE  WHEN SUM(DATEDIFF(SS,(CASE WHEN  ORDSERV.DATPRO < ORDSERV.MAQPAR
                       THEN  DATPRO
                       ELSE  ORDSERV.DATPRO
                       END),
                       (CASE WHEN  ORDSERV.DATPRO > ORDSERV.MAQPAR
                       THEN  MAQPAR
                       ELSE  ORDSERV.MAQPAR
                       END)))/3600.0 > 60 AND
                       SUM(DATEDIFF(SS,(CASE WHEN  ORDSERV.DATPRO < ORDSERV.MAQPAR
                       THEN  DATPRO
                       ELSE  ORDSERV.DATPRO
                       END),
                       (CASE WHEN  ORDSERV.DATPRO > ORDSERV.MAQPAR
                       THEN  MAQPAR
                       ELSE  ORDSERV.MAQPAR
                       END)))/3600.0 < 120 THEN 2 ELSE 0 END)'2HORAS',
                                 (CASE   WHEN SUM(DATEDIFF(SS,(CASE WHEN  ORDSERV.DATPRO < ORDSERV.MAQPAR
                       THEN  DATPRO
                       ELSE  ORDSERV.DATPRO
                       END),
                       (CASE WHEN  ORDSERV.DATPRO > ORDSERV.MAQPAR
                       THEN  MAQPAR
                       ELSE  ORDSERV.MAQPAR
                       END)))/3600.0 > 120 THEN 3 
                                    ELSE 0 END) 'SUPERIOR_2HORAS'
                                  
          
         
     FROM ORDSERV
     INNER JOIN TIPMANUT ON ORDSERV.CODEMP_2=TIPMANUT.CODEMP AND ORDSERV.CODTIPMAN=TIPMANUT.CODTIPMAN 
                        
     WHERE ORDSERV.DATPRO2 BETWEEN '12/05/2016' and '23/05/2016' 
       AND ORDSERV.CODEMP=76
       AND TIPMANUT.TAG IN ('CORR','CHAM')         
     GROUP BY ORDSERV.TAG,ORDSERV.DATPRO2,ORDSERV.MAQPAR,TIPMANUT.DESCRICAO
     ORDER BY 1,2
 
_____________________________________________________________________________________________________________
 
Resultado:
 
    OS       DATPRO2        MAQPAR                 DESCRICAO     H_ATEND    1HORA     2HORAS     SUPERIOR_2HORAS      
 -------       ----------     -----------------------          -----------------     -------------   ----------  ---------------   -----------------------------
0001887  12/05/2016  12/05/2016 14:30:00     CORRETIVA    5,663333          1                    0                0  
0001888  12/05/2016  25/05/2016 11:00:00     CORRETIVA  314,086666         0                   0                3  
0001889  12/05/2016  12/05/2016 12:00:00     CORRETIVA    2,296666           1                   0                0  
0001890  12/05/2016  16/05/2016 08:00:00     CORRETIVA   87,898611           0                   2                0  
0001891  12/05/2016  18/05/2016 16:00:00     CORRETIVA  143,879166          0                   0                3  
0001892  13/05/2016  13/05/2016 09:00:00     CORRETIVA    0,609722           1                    0                0  
0001893  13/05/2016  04/06/2016 08:00:00     CORRETIVA  527,594444         0                    0                3  
0001894  13/05/2016  13/05/2016 07:53:00     CORRETIVA   -0,539166           1                    0                0  
0001895  13/05/2016  16/05/2016 15:40:00     CORRETIVA   79,226388           0                    2                0  
0001896  13/05/2016  23/05/2016 16:38:00     CORRETIVA  248,162222          0                    0                3  
0001897  13/05/2016  13/05/2016 08:02:00     CORRETIVA   -0,452222           1                     0                0  
0001898  13/05/2016  13/05/2016 08:40:00     CORRETIVA       0,115              1                     0                0  
0001899  13/05/2016  12/05/2016 16:00:00     CORRETIVA  -16,570833          1                     0                0  
0001900  13/05/2016  13/05/2016 12:00:00     CORRETIVA   -2,959444           1                     0                0  
0001901  13/05/2016  13/05/2016 16:48:00      CORRETIVA    1,815277          1                     0                0 
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...