problema, error division por 0

12/04/2007 - 18:19 por Sergio E. | Informe spam
Hola de nuevo amigos, tengo una nueva duda...

Estoy haciendo la consulta

SELECT round(SUM((cast(ItemsVendidos as float))*100) /
SUM(PorcentajeVentas),2) from totalesmensuales

pero me arroja un error de division por cero si la suma es cero...

¿hay alguna forma de que si es division por cero no me de error si no me
devuelva 0?

mil gracias

Saludos,
Sergio E.
DCE2005 - 2*

echale numeros, de puros libros tengo 5.8 Gb +

Preguntas similare

Leer las respuestas

#1 A.A.S.
12/04/2007 - 19:04 | Informe spam
Sergio, prueba lo siguiente:

select isnull(
(
SELECT round(SUM((cast(ItemsVendidos as float))*100) /
SUM(PorcentajeVentas),2) from totalesmensuales
where PorcentajeVentas<>0
)
,0)

Saludos.

Andrés


"Sergio E." wrote:

Mostrar la cita
#2 Sergio E.
12/04/2007 - 19:35 | Informe spam
te agradezco la ayuda Andrés

Saludos,
Sergio E.
DCE2005 - 2*


"A.A.S." escribió en el mensaje
news:
Mostrar la cita
#3 Alejandro Mesa
12/04/2007 - 21:26 | Informe spam
Sergio E.,

El error puede estar donde quiera que tengas una division. Si en denominador
es cero, SQL Server reportara error. Una forma de evitar esto es usando la
funcion NULLIF y devolver NULL cuando el denominador es cero y como cualquier
operacion con NULL dara como resultado NULL entonces no habra error.

Ejemplo:

declare @d int

set @d = 0

select 1 / nullif(@d, 0)
go


AMB

"Sergio E." wrote:

Mostrar la cita
#4 A.A.S.
12/04/2007 - 22:34 | Informe spam
No conocía la función NULLIF que menciona Alejandro, me parece buena... de
todas formas, dándole una vuelta a mi propuesta me di cuenta que hay que
reemplazar el WHERE por un having:


select isnull(
(
SELECT round(SUM((cast(ItemsVendidos as float))*100) /
SUM(PorcentajeVentas),2) from totalesmensuales
having SUM(PorcentajeVentas)<>0
)
,0)

y en el ejemplo de Alejandro tambien se debiera usar el ISNULL ya que
cualquier operación con nulos retornará nulo, y tu necesitabas retornar cero.

Con eso ya tienes 2 opciones.

Suerte y saludos.

Andrés.


"Sergio E." wrote:

Mostrar la cita
#5 Sergio E.
13/04/2007 - 01:54 | Informe spam
te agradezco el dato

Saludos,
Sergio E.
DCE2005 - 2*


"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida