Array
(
)

Soma dos Valores das Marcações dos Intervalos de Tempo

Leonardo Santos
   - 07 jun 2016

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 . campos Quantidade 1 hora = 11 , 2 horas = 2 e superior a 2 horas = 4. Quem pode 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
0001902 13/05/2016 14/05/2016 10:30:00 CORRETIVA 18,34 1 0 0
0001903 16/05/2016 17/05/2016 16:00:00 CORRETIVA 28,401666 1 0 0