Ir para conteúdo
Fórum Script Brasil

Leonardo JSantos

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre Leonardo JSantos

Leonardo JSantos's Achievements

0

Reputação

  1. Boa tarde, Estou tentando montar um gráfico que mostra o intervalo de tempo em horas trabalhadas pelo funcionário. Segue abaixo o código: SELECT ORDSERV.TAG, ORDSERV.DATPRO2, (case when (maqpar - datpro2) < 0 then 'antecipado' end) antes_datap, (case when (maqpar - datpro2) between 0 and 1 then '1 hora' end) umahora, (case when (maqpar - datpro2) between 1 and 2 then '2 hora' end) duashoras, (case when (maqpar - datpro2) > 2 then '3 hora' end) acima_duas FROM ORDSERV inner join ORDXFUN on ORDXFUN.CODORD=ORDSERV.CODORD INNER JOIN TIPMANUT ON TIPMANUT.CODTIPMAN=ORDSERV.CODTIPMAN AND TIPMANUT.CODEMP=ORDSERV.CODEMP_2 INNER JOIN REGSERV ON REGSERV.CODEMP=ORDSERV.CODEMP AND REGSERV.CODORD=ORDSERV.CODORD LEFT OUTER JOIN FILIAL ON FILIAL.CODFIL=ORDSERV.CODFIL AND FILIAL.CODEMP=ORDSERV.CODEMP_7 WHERE ORDSERV.DATPRO2 BETWEEN '01/11/2018' and '30/11/2018' AND ORDSERV.STATORD = 'F' AND ORDSERV.CODEMP=96 AND TIPMANUT.TAG NOT IN ('prev','insp', 'inst') ORDER BY ORDSERV.CODCLI, ORDSERV.TAG TAG DATPRO2 antes_datap umahora duashoras acima_duas ------- ---------- ----------- ------- --------- ---------- 0023817 01/11/2018 1 hora 0023818 01/11/2018 1 hora 0024022 05/11/2018 antecipado 0024067 05/11/2018 antecipado 0024067 05/11/2018 antecipado 0024067 05/11/2018 antecipado 0024577 06/11/2018 antecipado 0024577 06/11/2018 antecipado 0024577 06/11/2018 antecipado 0024577 06/11/2018 antecipado 0024578 06/11/2018 antecipado 0024578 06/11/2018 antecipado 0024579 06/11/2018 antecipado 0024579 06/11/2018 antecipado 0024580 07/11/2018 antecipado 0024581 07/11/2018 antecipado 0024582 07/11/2018 antecipado 0024583 07/11/2018 antecipado 0024583 07/11/2018 antecipado 0024584 07/11/2018 antecipado 0024586 07/11/2018 antecipado 0024587 07/11/2018 antecipado 0024588 07/11/2018 1 hora 0024589 07/11/2018 antecipado 0024590 23/11/2018 antecipado 0024592 07/11/2018 1 hora 0024592 07/11/2018 1 hora 0024593 08/11/2018 antecipado As horas antecipadas que são menor que 0 ou seja, a ordem de serviço foi fechada antes da data programada está correto. Mas quando chega em 1 hora ele identifica alguns, e outros que são até 2 ou acima de 2 ele identifica como 1 hora também. Se alguém puder me ajudar, desde já agradeço.
  2. 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
  3. Boa tarde,Estou com um código que me traz os valores dos campos da tabela, porem quando eu " *100/ " ele me dá tudo 100% sendo que o valor seria a quantidades de ordserv. geradas / ordserv.fechadas e depois multiplicada por 100 pra dar o percentual. Segue o código abaixo:SELECT DATEPART(MM, ORDSERV.DATPRO2) MES, DATEPART(YY, ORDSERV.DATPRO2) MES, ENGEMAN.MESABREV(ORDSERV.DATPRO2)+'/'+SUBSTRING(CAST(DATEPART(YY, ORDSERV.DATPRO2) AS VARCHAR),3,2) MES_ANO,SUM(CASE WHEN ORDSERV.STATORD='F' THEN 1 ELSE 0 END) 'REALIZADAS'FROM ORDSERVWHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016'AND ORDSERV.STATORD='F'AND ORDSERV.CODEMP=76AND 'S' IN (SELECT REGSERV.EXECUTADO FROM REGSERV WHERE REGSERV.CODEMP=ORDSERV.CODEMP AND REGSERV.CODORD=ORDSERV.CODORD) GROUP BY DATEPART(MM, ORDSERV.DATPRO2),ENGEMAN.MESABREV(ORDSERV.DATPRO2), DATEPART(YYYY, ORDSERV.DATPRO2)ORDER BY 1,2Resultado: MES MES_1 MES_ANO REALIZADAS --- ----- ------- ---------- 3 2016 mar/16 489 4 2016 abr/16 659 Esse é o resultado que ele me dá em valores, está correto, total de realizadas.SELECT DATEPART(MM, ORDSERV.DATPRO2) MES, DATEPART(YY, ORDSERV.DATPRO2) MES, ENGEMAN.MESABREV(ORDSERV.DATPRO2)+'/'+SUBSTRING(CAST(DATEPART(YY, ORDSERV.DATPRO2) AS VARCHAR),3,2) MES_ANO,COUNT(*) 'GERADAS'FROM ORDSERVWHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016'AND ORDSERV.STATORD='F'AND ORDSERV.CODEMP=76 GROUP BY DATEPART(MM, ORDSERV.DATPRO2),ENGEMAN.MESABREV(ORDSERV.DATPRO2), DATEPART(YYYY, ORDSERV.DATPRO2)ORDER BY 1,2Resultado:MES MES_1 MES_ANO GERADAS --- ----- ------- ------- 3 2016 mar/16 514 4 2016 abr/16 707 Esse é o resultado que ele me dá em valores, está correto, total de geradas. Quando eu peço pra ele me dá em porcentagem ele me trás tudo 100%.SELECT DATEPART(MM, ORDSERV.DATPRO2) MES, DATEPART(YY, ORDSERV.DATPRO2) MES, ENGEMAN.MESABREV(ORDSERV.DATPRO2)+'/'+SUBSTRING(CAST(DATEPART(YY, ORDSERV.DATPRO2) AS VARCHAR),3,2) MES_ANO,SUM(CASE WHEN ORDSERV.STATORD='F' THEN 1 ELSE 0 END)*100/COUNT(*) AS PORCENTAGEMFROM ORDSERVWHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016'AND ORDSERV.STATORD='F'AND ORDSERV.CODEMP=76AND 'S' IN (SELECT REGSERV.EXECUTADO FROM REGSERV WHERE REGSERV.CODEMP=ORDSERV.CODEMP AND REGSERV.CODORD=ORDSERV.CODORD) GROUP BY DATEPART(MM, ORDSERV.DATPRO2),ENGEMAN.MESABREV(ORDSERV.DATPRO2), DATEPART(YYYY, ORDSERV.DATPRO2)ORDER BY 1,2Resultado:MES MES_1 MES_ANO PORCENTAGEM --- ----- ------- ----------- 3 2016 mar/16 100 4 2016 abr/16 100 Creio que o erro está na condição "AND 'S' IN (SELECT REGSERV.EXECUTADO FROM REGSERV WHERE REGSERV.CODEMP=ORDSERV.CODEMP AND REGSERV.CODORD=ORDSERV.CODORD) " , mas é com ele que tiro os resultados da tabela REGSERV e trago para a ORDSERV me dando o todas das realizadas.Peço ajuda de vocês pois já estou uma semana tentando resolver isso e nada. Qualquer ajuda é bem vinda. Desde já agradeço a todos.
×
×
  • Criar Novo...