Redondear valor superior con SQL Access
donlefou
Mensajes publicados
44
Estado
Miembro
-
buffon74 -
buffon74 -
Hola, me gustaría saber si en una consulta SQL se puede redondear un valor a su entero superior.
Existe la función Int(Número) que solo redondea al entero más cercano (0,3 se convierte en 0).
Quisiera redondear 0,3 a 1.
Existe la función Int(Número) que solo redondea al entero más cercano (0,3 se convierte en 0).
Quisiera redondear 0,3 a 1.
6 respuestas
-
Hola,
la función REDONDEAR no existe en ACCESS...
Pero se puede hacer un truco, hay que ver si el número es decimal (por lo que se mira el resultado del número menos su parte entera), en ese caso, se aísla la parte entera y se le añade uno, este es el objetivo de la consulta a continuación :SELECT TABTEST.[campo], IIf([campo]-Int([campo])=0,[campo],int([campo])+1) AS Resu FROM TABTEST; campo Resu 0,024 1 0,5 1 1 1 14,5 15 2,3 3 0,1 1 0,3 1 1 1 2 2 3 3 1245 1245 45 45 1256 1256 4584,256 4585 2 2 6 6 7 7 8 8 95 95 0,0003 1
¡Y listo!
--
¡A+ Blux"Los tontos se atreven a todo. Es incluso por eso que los reconocemos"
-
-
Re-testeado en casa, funciona bien...
¿Problema con int? ¿con el cálculo de la diferencia? ¿Campos descritos en reales?
¿Qué versión de Access? (97 en mi caso...)
intenta mostrar únicamente el resultado de la diferencia :SELECT TABTEST.[champ], ([champ]-Int([champ])=0) AS Resu FROM TABTEST;
Para ver...
--
A+ Blux"Los tontos, se atreven a todo. Es incluso así como los reconocemos"
-
-
¿Y 2 no daría 3 con este método?
--
¿No es hermosa la vida? -
de hecho, la función int() no devuelve el número más cercano, sino el entero inferior (0,3==>0 pero 0,8==>0)
por eso int(nb+1) redondea hacia el entero más alto. -
Hola
Creo que la función ROUND redondea al entero más cercano. Lo que puedes hacer es redondear y hacer +1 sobre el redondeo...
¡Hasta luego!
--El tiempo perdido nunca se recupera. Entonces, sigamos sin hacer nada. J.Renard
-
de hecho, la función int() no devuelve el número más cercano sino el entero inferior (0,3==>0 pero 0,8==>0)
por eso int(nb+1) redondea hacia el entero más alto. -
-
La pregunta inicial era redondear al entero superior, la fórmula que di en su momento funciona perfectamente.
1 redondeo nos da 1 La función de redondeo no existe en ACCESS...
--
A+ Blux"Los tontos se atreven a todo. Es incluso por eso que los reconocemos"
- Para información, si puede ayudar a alguien
Función de redondeo superior en todos los casos en la expresión de una consulta access
x es un número real
iif(int(x)=x;x;int(x+1))
x=1
int(1) es igual a 1, por lo tanto da 1
x=1.1
int(1.1) no es igual a 1, por lo tanto da 1+1=2
Por supuesto, se puede reemplazar x por el valor de un campo, pero en este caso no olvides los corchetes
x es un campo
iif(int([x])=[x];[x];int([x]+1))
Atentamente
b747fred
-