Ver Mensaje Individual
  #1  
Antiguo 31-01-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Reputación: 18
mcalmanovici Va por buen camino
Thumbs down Multiplicacion de dos campos dentro de un order by...

Hola; quiero ejecutar la siguiente sentencia en sql con el motor de base de datos firebird. Cuando ejecuto esto me sale el siguiente error:
Integer overflow. The result of an integer operation caused the most significant bit of the result to carry.

La sentencia es:
select I.COD_ITEM AS ARTICULO, I.DESCRIPCION, I.ABC, I.INV_SEGURIDAD AS PUNTO_PEDIDO, I.ORDER_MIN AS LOTE_ECON_COMPRA, TA.QTY AS CONSUMO, TA.UNIT_COST AS PRECIO_ULT_COMPRA,
TA.COST AS IMPORTE, TA.ACCUM AS IMPORTE_ACUM,
TA.PORCENTAJE, TA.ABC as ABC_CALCULADO,
I.LEAD_TIME, TA.UNIT_COST, TA.QTY
FROM ITEMS I JOIN TMP_ABC TA ON I.ID_EMPRESA = TA.ID_EMPRESA
and I.COD_ITEM = TA.COD_ITEM
LEFT JOIN CONSUMO C ON I.COD_ITEM = C.COD_ITEM and
I.ID_EMPRESA = C.ID_EMPRESA and
C.ANIO = extract(year from current_date)
order by (TA.QTY * TA.UNIT_COST)


Si a esta sentencia le saco la línea del order by funciona correctamente. Los campos TA.QTY y TA.UNIT_COST son de tipo "numeric (15,8)". Supongo que el error es porque son numeric los campos. Yo necesito ordenar la consulta de mayor a menor pro TA.QTY * TA.UNIT_COST.
Esta consulta la realizo desde el delphi para realizar un reporte.
También trate de que esta multiplicacion me la devuelva como un campo más para luego poder ordenar la consulta desde el data set de delphi pero tambien me tira el mismo error.
Si alguien sabe si existe otra forma de ordenar esto o que estoy haciendo mal, estaré agradecido.

Desde ya muchas gracias.
Mariano.
Responder Con Cita