Ver Mensaje Individual
  #1  
Antiguo 21-10-2010
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Reputación: 24
Toni Va por buen camino
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
El problema es que cuando ejecuto esta consulta me esta devolviendo registros que el calculo es <1. y no deberia. He intentado utilizar un cast to integer pero no me deja ponerlo en la expresion.

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
Tambien he probado a intentar utilizar la variable CALCULO de la clausula select en la clausula where pero me lanza un error que no reconoce la columna! Creo que no se puede en esta version de FB1.5.

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
Responder Con Cita