Abajo he puesto un ejemplo de unos cálculos de SQL, que cambian si se
realizan todos en una única línea de código, o se realizan en varios pasos:
Lo primero que he puesto ha sido una operación base, con las constantes que
se usan para el cálculo de forma que nos sirva de Ejemplo:
y despúes he puesto el cálculo con variables, viendo que si el cálculo se
realiza todo de golpe, el resultado no es correcto, pero que si lo
realizamos por partes si que funciona bien, con la salvedad del número de
decimales que saca, ya que a pesar de ser todas las variables utilizadas
decimal(28,6), ni saca 6 decimales, ni saca como la primera operación todos
los deimales, si no que se lo monta para sacar 10...
- Me gustaria saber si esto estaba documentado, y hasta que punto es normal
el tema de los decimales en la división.
Muchas gracias a todos.
José Raúl Fenollar Martínez
Gandia (Valencia)
SELECT
Cálculo_1_A_6_Decimales=convert(decimal(28,6),(6000.000000+((12.300000+0.000000)*10.000000)+0.000000+0.000000)/210.000000),
Cálculo_1_A_X_Decimales=(6000.000000+((12.300000+0.000000)*10.000000)+0.000000+0.000000)/210.000000
DECLARE
@1 DECIMAL(28,6),
@2 DECIMAL(28,6),
@3 DECIMAL(28,6),
@4 DECIMAL(28,6),
@5 DECIMAL(28,6),
@6 DECIMAL(28,6),
@7 DECIMAL(28,6),
@8 DECIMAL(28,6),
@9 DECIMAL(28,6),
@10 DECIMAL(28,6)
SELECT
@1`00,
@2.3,
@3=0,
@4,
@5=0,
@6=0,
@7!0
SELECT
Cálculo_2_A_6_Decimales=convert(decimal(28,6),(@1+((@2+@3)*@4)+@5+@6)/@7),
Cálculo_2_A_X_Decimales=(@1+((@2+@3)*@4)+@5+@6)/@7
SELECT
@8=(@2+@3)*@4
SELECT
@9=@1+@8
SELECT
@10=@9+@5+@6
SELECT Cálculo_3_A_6_Decimales=convert(decimal(28,6),@10/@7),
Cálculo_3_A_X_Decimales=@10/@7
Leer las respuestas