error de division entre cero

23/11/2005 - 20:14 por Enrique Rodríguez | Informe spam
Hola foro

Tengo un select como el siguiente:

SELECT A.CTS, A.Zona, A.Fecha, A.Hora, A.Aforo, B.Fecha AS Fecha2,
B.Aforo AS Aforo2, B.Aforo - A.Aforo AS Diferencia
FROM dbo.CGstat A LEFT OUTER JOIN
dbo.CGstat B ON A.CTS = B.CTS AND A.Zona = B.Zona AND
DATEADD(Week, 1, A.Fecha) = B.Fecha AND A.Hora = B.Hora
WHERE (A.Fecha BETWEEN '01/08/2005' AND '07/08/2005')

quisiera que en lugar de B.Aforo - A.Aforo AS Diferencia, hacer un calculo
como este: ((B.Aforo -A.Aforo)/A.Aforo)*100 pero me marca error de division
entre cero.

Alguien me puede ayudar?

Saludos.

Enrique Rodríguez A

Preguntas similare

Leer las respuestas

#1 Angel Neri Cervín
23/11/2005 - 22:33 | Informe spam
El problema es que algún A.Aforo está en cero, y en este caso la división no
funciona.
Quizás te convendría poner el cálculo dentro de una función, y allí decidir
que valor devolver cuando sea cero o cuando tenga un valor.

Neri

"Enrique Rodríguez" escribió en el mensaje
news:
Hola foro

Tengo un select como el siguiente:

SELECT A.CTS, A.Zona, A.Fecha, A.Hora, A.Aforo, B.Fecha AS Fecha2,
B.Aforo AS Aforo2, B.Aforo - A.Aforo AS Diferencia
FROM dbo.CGstat A LEFT OUTER JOIN
dbo.CGstat B ON A.CTS = B.CTS AND A.Zona = B.Zona AND
DATEADD(Week, 1, A.Fecha) = B.Fecha AND A.Hora = B.Hora
WHERE (A.Fecha BETWEEN '01/08/2005' AND '07/08/2005')

quisiera que en lugar de B.Aforo - A.Aforo AS Diferencia, hacer un calculo
como este: ((B.Aforo -A.Aforo)/A.Aforo)*100 pero me marca error de
division entre cero.

Alguien me puede ayudar?

Saludos.

Enrique Rodríguez A

Respuesta Responder a este mensaje
#2 Enrique Rodríguez
23/11/2005 - 22:58 | Informe spam
Tienes razon Neri tengo algunos campos con valores en cero y no me habia
fijado jejeje..

Voy a irme por la opcion que me recomiendas.

Gracias.

"Angel Neri Cervín" escribió en el mensaje
news:%
El problema es que algún A.Aforo está en cero, y en este caso la división
no funciona.
Quizás te convendría poner el cálculo dentro de una función, y allí
decidir que valor devolver cuando sea cero o cuando tenga un valor.

Neri

"Enrique Rodríguez" escribió en el mensaje
news:
Hola foro

Tengo un select como el siguiente:

SELECT A.CTS, A.Zona, A.Fecha, A.Hora, A.Aforo, B.Fecha AS Fecha2,
B.Aforo AS Aforo2, B.Aforo - A.Aforo AS Diferencia
FROM dbo.CGstat A LEFT OUTER JOIN
dbo.CGstat B ON A.CTS = B.CTS AND A.Zona = B.Zona
AND DATEADD(Week, 1, A.Fecha) = B.Fecha AND A.Hora = B.Hora
WHERE (A.Fecha BETWEEN '01/08/2005' AND '07/08/2005')

quisiera que en lugar de B.Aforo - A.Aforo AS Diferencia, hacer un
calculo como este: ((B.Aforo -A.Aforo)/A.Aforo)*100 pero me marca error
de division entre cero.

Alguien me puede ayudar?

Saludos.

Enrique Rodríguez A





Respuesta Responder a este mensaje
#3 LuisMiguel
24/11/2005 - 09:32 | Informe spam
Buenas
Si utilizas SQLServer, puedes utilizar la intruccion CASE
(Te lo escribo de memoria, revisa la sintaxis correcta)
... B.Aforo as Aforo2, case A.Aforo
when 0 then 0
else ((B.Aforo -A.Aforo)/A.Aforo)*100
end as LoQueSea

Suerte
LuisMiguel
"Enrique Rodríguez" escribió en el mensaje
news:

Hola foro

Tengo un select como el siguiente:

SELECT A.CTS, A.Zona, A.Fecha, A.Hora, A.Aforo, B.Fecha AS Fecha2,
B.Aforo AS Aforo2, B.Aforo - A.Aforo AS Diferencia
FROM dbo.CGstat A LEFT OUTER JOIN
dbo.CGstat B ON A.CTS = B.CTS AND A.Zona = B.Zona AND
DATEADD(Week, 1, A.Fecha) = B.Fecha AND A.Hora = B.Hora
WHERE (A.Fecha BETWEEN '01/08/2005' AND '07/08/2005')

quisiera que en lugar de B.Aforo - A.Aforo AS Diferencia, hacer un calculo
como este: ((B.Aforo -A.Aforo)/A.Aforo)*100 pero me marca error de
division entre cero.

Alguien me puede ayudar?

Saludos.

Enrique Rodríguez A


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida