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:
SUM(CASE WHEN ORDSERV.STATORD='F' THEN 1 ELSE 0 END) 'REALIZADAS'
FROM ORDSERV
WHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016' AND ORDSERV.STATORD='F' AND ORDSERV.CODEMP=76 AND '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,2
WHERE 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,2
SUM(CASE WHEN ORDSERV.STATORD='F' THEN 1 ELSE 0 END)*100/COUNT(*) AS PORCENTAGEM
FROM ORDSERV
WHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016' AND ORDSERV.STATORD='F' AND ORDSERV.CODEMP=76 AND '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,2
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.
Pergunta
Leonardo JSantos
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 ORDSERV
WHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016'
AND ORDSERV.STATORD='F'
AND ORDSERV.CODEMP=76
AND '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,2
Resultado:
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 ORDSERV
WHERE 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,2
Resultado:
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 PORCENTAGEM
FROM ORDSERV
WHERE ORDSERV.DATPRO2 BETWEEN '01/03/2016' AND '30/04/2016'
AND ORDSERV.STATORD='F'
AND ORDSERV.CODEMP=76
AND '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,2
Resultado:
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.
Link para o comentário
Compartilhar em outros sites
0 respostass 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.