Boa tarde a todos.
Levando em consideração apenas à regra abaixo:
“O que desejo fazer é o seguinte valores entre 1 e 5 arredondo para baixo ; entre 6 e 9 arredondo para cima.”
Ou seja:
O arredondamento do número 10,6 seria 11
O arredondamento do número 10,4 seria 10
Consegui gerar o código abaixo:
SELECT CASE WHEN (MOD(VALOR , TRUNC(VALOR, 0)) BETWEEN 0 AND 0.5) THEN (VALOR – MOD(VALOR , TRUNC(VALOR, 0)))
ELSE (VALOR + (1 – MOD(VALOR , TRUNC(VALOR, 0))))
END AS “NEW_VALUE”
FROM DUAL
EXEMPLO :
SELECT CASE WHEN (MOD(10.5 , TRUNC(10.5, 0)) BETWEEN 0 AND 0.5) THEN (10.5 – MOD(10.5 , TRUNC(10.5, 0)))
ELSE (10.5 + (1 – MOD(10.5 , TRUNC(10.5, 0))))
END AS “NEW_VALUE”
FROM DUAL;
SELECT CASE WHEN (MOD(10.6 , TRUNC(10.6, 0)) BETWEEN 0 AND 0.5) THEN (10.6 – MOD(10.6 , TRUNC(10.6, 0)))
ELSE (10.6 + (1 – MOD(10.6 , TRUNC(10.6, 0))))
END AS “NEW_VALUE”
FROM DUAL;
Por favor, qualquer bug na lógica é só reportar.
Abraços Clayton.