Problema de redondeo

27/10/2008 - 17:26 por Miguel | Informe spam
Hola:

A ver si puedo explicar mi problema, tengo la siguiente consulta:

declare @lncuota numeric(18, 7)

SET @lnCuota = (((SELECT (Interes + (SELECT BalanceCapital FROM Prestamo
WHERE Transaccion = 4 AND Estado = 1) / (SELECT Tiempo FROM Prestamo WHERE
Transaccion = 4 AND Estado = 1))
FROM Amortizacion
WHERE Transaccion = 4 AND NumCuota = 1)) -

(SELECT ISNULL(SUM(Importe), 0.00)
FROM Pago
WHERE Prestamo = 4 AND NumCuota = 1 AND
Estado = 1)

)
select @lncuota

Aquí presento una resta de dos consultas para que el resultado se acumule en
la varible @lnCuota, el caso es que busco que el resultado me muestre 7
decimales en lo que ya están establecidos en los campos de la tabla de la
primera consulta. Si ejecuto solo la primera consulta sin hacer la resta el
resultado me produce 7 decimales como lo quiero, pero al colocarle la resta
de la segunda consulta, el resultado se redondea a 2 decimales que eso es lo
que no quiero, he probado utilizando round(..., 7) en la segunda consulta y
no funciona y lo que no entiendo es que por qué lo hace así si la primera
consulta me devuelve 7 decimales. Lo que busco con este resultado es que me
aparezca con 7 decimales.

Gracias,


Miguel
 

Leer las respuestas

#1 Alejandro Mesa
27/10/2008 - 18:14 | Informe spam
Miguel,

Que tipo de data es [Interes], [BalanceCapital] , [Tiempo] e [Importe]?

Quizas tengas que convertir esos valores a numeric(18, 7) , al menos uno de
ellos.


AMB


"Miguel" wrote:

Hola:

A ver si puedo explicar mi problema, tengo la siguiente consulta:

declare @lncuota numeric(18, 7)

SET @lnCuota = (((SELECT (Interes + (SELECT BalanceCapital FROM Prestamo
WHERE Transaccion = 4 AND Estado = 1) / (SELECT Tiempo FROM Prestamo WHERE
Transaccion = 4 AND Estado = 1))
FROM Amortizacion
WHERE Transaccion = 4 AND NumCuota = 1)) -

(SELECT ISNULL(SUM(Importe), 0.00)
FROM Pago
WHERE Prestamo = 4 AND NumCuota = 1 AND
Estado = 1)

)
select @lncuota

Aquí presento una resta de dos consultas para que el resultado se acumule en
la varible @lnCuota, el caso es que busco que el resultado me muestre 7
decimales en lo que ya están establecidos en los campos de la tabla de la
primera consulta. Si ejecuto solo la primera consulta sin hacer la resta el
resultado me produce 7 decimales como lo quiero, pero al colocarle la resta
de la segunda consulta, el resultado se redondea a 2 decimales que eso es lo
que no quiero, he probado utilizando round(..., 7) en la segunda consulta y
no funciona y lo que no entiendo es que por qué lo hace así si la primera
consulta me devuelve 7 decimales. Lo que busco con este resultado es que me
aparezca con 7 decimales.

Gracias,


Miguel



Preguntas similares