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:

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 +



Respuesta Responder a este mensaje
#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:
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:

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 +



Respuesta Responder a este mensaje
#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:

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 +



Respuesta Responder a este mensaje
#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:

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 +



Respuesta Responder a este mensaje
#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:
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:

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 +



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida