FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con calculo en clausula where
Hola compañeros,
Tengo un problema con una consulta que tengo que hacer que me esta dando dolores de cabeza. Esta consulta tiene que funcionar en FB1.5 pues son aplicaciones que ya estan funcionando y por el momento no puedo migrar a FB2.5. (espero poder hacerlo mas adelante, pero la prioridad manda) La consulta me esta dando problemas en la clausula WHERE, tengo una expresion que realiza unos calculos con varios campos y finalmente el resultado de este calculo lo comparo si es >1. Evidentemente para que solo me muestre los valores que el calculo supere a 1. Esta consulta la estoy usando dentro de un procedimiento almacenado y las variables que utilizo son de tipo integer (V_VAR1, V_VAR2, V_VAR3) y los campos que utilizo para el calculo son de tipo NUMERIC(10,3) y uno de ellos es 'calculado' NUMERIC(15,3) Código:
select CAMPO1, CAMPO2 from TABLA1 T1 where ((T1.CAMPO3-(T1.CAMPO5*:V_VAR1))/(:V_VAR2 * :V_VAR3))>=1 He probado con esta otra consulta para poder ver el resultado del calculo y estoy en lo cierto que el calculo es <1 (0.734) Código:
select CAMPO1, CAMPO2, ((T1.CAMPO3-(T1.CAMPO5*:V_VAR1))/(:V_VAR2 * :V_VAR3)) AS CALCULO from TABLA1 T1 El problema es que tengo que buscar alguna solucion pues no tengo que arrancar el sistema ya y no hay tiempo de migraciones en las que me voy ha encontrar con muchos otros problemas. Si alguien tiene algo de luz se lo agradecere. Saludos,
__________________
Saludos, Bitman |
#3
|
|||
|
|||
Estoy especulando pero es posible que en lugar de preguntar en el where por
>=1 debas poner >=1.000 por probar que no quede. |
#4
|
|||
|
|||
Si yo creo que el problema viene por los diferentes tipos de datos numericos en el calculo y despues en la comparacion pues hace algo raro.
Probare esto que me comentas y os digo algo. gracias
__________________
Saludos, Bitman |
#5
|
|||
|
|||
Si yo creo que el problema viene por los diferentes tipos de datos numericos en el calculo y despues en la comparacion pues hace algo raro.
Probare esto que me comentas y os digo algo. gracias
__________________
Saludos, Bitman |
#6
|
||||
|
||||
Resp
Tu problema radica en el tipo de dato. ya que tienes dos multiplicaciones y una division lo que le dice al manejador que incremente la precion para poder alvergar el tipo datos. Este es un tema muy tratado en los foros.
Yo lo sulcionaria de la siguiente manera
El numero de decimales depende de ti o de lso datos y mas si usas double o float si colocar Numeric(18, x) entonces el x deberias poner la cantidad de x en ceros al uno para asegurarte de las cosas simpre te van a funcionar por lo de la preciosion y toda la teoria que esto arrastra. Espero haberme explicado y que te funcione la solucion.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#7
|
|||
|
|||
Hola a todos,
Pues has dado en el clavo rastafarey! es exactamente eso lo que me pasaba. ahora funciona perfectamente. Muchas gracias. Saludos.
__________________
Saludos, Bitman |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
SQL y clausula Count | karlaoax | SQL | 14 | 17-09-2007 19:35:55 |
Clausula Like | JoseAntonio | SQL | 5 | 27-05-2007 07:28:47 |
Clausula LIKE | federiconqn21 | SQL | 3 | 28-12-2005 15:49:13 |
Usando la cláusula LIKE | mlara | Firebird e Interbase | 1 | 10-06-2003 06:12:01 |
Clausula UNION | TJose | Firebird e Interbase | 3 | 15-05-2003 20:59:56 |
|