PDA

Ver la Versión Completa : Campos calculados, computed by


DamianG
21-03-2013, 15:39:11
Hola a todos, mi consulta esta vez debido a un calculo que realizo en la una tabla donde tengo un campo de aportes de empleados llamado APOTRA (Numeric 12,2), un campo donde tengo el sueldo, SUELDO ( Numeric 12,2), y un campo calculado que es el total del aporte TAPOTRA ( COMPUTED BY SUELDO * APOTRA/100);

El problema es que el si el % del aporte es (APOTRA=2,7) y el sueldo es 1000 el total me da como resultado el campo calculado 20, o sea no toma el decimal...

En la tabla veo que el campo TAPOTRA se guardo como BIGINT, entonces lo cree de la siguiente manera

alter table empsueldosdet add
TAPOTRA COMPUTED BY CAST(SUELDO * APOTRA /100 as numeric(12,2));

Igualmente sigue redondeando sin decimales el calculo... Alguien sabe que puede pasar? Gracias!!

Casimiro Notevi
21-03-2013, 18:01:51
Guárdalo como cadena de texto: cast( xxxx as varchar)
¿Para qué sirve almacenar en un campo calculado el sueldo?

Al González
21-03-2013, 19:09:11
Sólo tienes que cambiar ese "100" por "100.0". Me parece que en algún otro hilo se habló de las reglas de división en SQL / Firebird.

ecfisa
21-03-2013, 19:46:31
Sólo tienes que cambiar ese "100" por "100.0". Me parece que en algún otro hilo se habló de las reglas de división en SQL / Firebird.
Correcto así es Al.

No recuerdo el hilo, pero el caso específico figura en la documentación de Firebird: Division of an integer by an integer (http://www.firebirdsql.org/manual/qsg10-firebird-sql.html)

Saludos. :)

DamianG
21-03-2013, 20:47:00
Gracias, poniendo 100.00 se acomodo. Casimiro no guardo en un campo calculado el sueldo, sino el resultado de un porcentaje que debo obtener según ciertos aportes que se realizan a cada empleado. Esos datos estan en una grilla donde se van calculando cuando ponen el porcentaje. Para eso los campos calculados me han servido.

Gracias.

Casimiro Notevi
21-03-2013, 21:08:33
^\||/ bien, ahora entiendo.