Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Resta entre Campos (https://www.clubdelphi.com/foros/showthread.php?t=82017)

shoulder 15-01-2013 20:19:46

Resta entre Campos
 
Una pregunta, no lo puedo solucionar, tengo un motor Mysql 5.0.67.

Tengo un select (sum(articulo * valor) - sum(articulo2 * valor)) as diferencia from ...todo dentro de un group by

si la diferencia no es cero el resultado me da perfecto, pero cuando es cero, en vez de mostrar o listar el numero cero me muestra algo parecido a 1.42850-e041

Gracias.

Al González 16-01-2013 16:38:30

Cita:

Empezado por shoulder (Mensaje 453453)
select (sum(articulo * valor) - sum(articulo2 * valor)) as diferencia [...] pero cuando es cero, en vez de mostrar o listar el numero cero me muestra algo parecido a 1.42850-e041

No frecuento mucho que digamos MySQL pero parece que el resultado que te da es bastante normal, ya que las operaciones con valores de punto flotante arrojan siempre como resultado aproximaciones (el número que muestras es muy muy muy aproximado a 0). :)

Quizá lo que te falte es hacer un "Cast As..." (molde de tipo) a toda la expresión para acomodarla al tipo de resultado que necesitas:
Código SQL [-]
...Cast ((sum(articulo * valor) - sum(articulo2 * valor)) As Numeric (15, 2)) As Diferencia...

Nos dices si te funciona.

NOTA: Recuerda usar las etiquetas especiales (botones arriba del editor) para darle formato al código fuente que pongas.

Saludos. :)

shoulder 16-01-2013 19:01:34

Restas entre Campos
 
Graciassss funciono, la verdad que no sabia como solucionarlo porque era ilogico para mi.
Te dejo como adapte el cast para que funcionara, con "as numeric" no funcionaba.

Cita:

Cast ((sum(articulo * valor) - sum(articulo2 * valor)) As Unsigned) As Diferencia

Al González 16-01-2013 20:00:38

Estupendo, gracias. :)

Es la retroalimentación que se espera siempre de quien alcanza una solución (es de ayuda para los que vienen luego). ^\||/


La franja horaria es GMT +2. Ahora son las 03:19:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi