Ayuda con IIF

17/02/2006 - 21:43 por Salvatore | Informe spam
Perdon por mi ignorancia estoy haciendo una consulta pero cuando utilizo el
IIF al hacer pa prueba logica me marca el siguiente error
Servidor: mensaje 170, nivel 15, estado 1, línea 3
Línea 3: sintaxis incorrecta cerca de '='.

la sentencia sql es mas o menoa asi

SELECT dbo.RepInvs.FciaID,
IIF(SUM(dbo.RepInvs.VtsTot) = 0, 0,
SUM(dbo.RepInvs.DifInvTot) / SUM(dbo.RepInvs.VtsTot) * 100) AS mermainv
From ...

por fav alguien echeme la mano de ante mano gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
17/02/2006 - 21:56 | Informe spam
Salvatore,

Esa expression logica no existe en T-SQL. Debes usar la expresion "case".

case when SUM(dbo.RepInvs.VtsTot) = 0 then 0 else
SUM(dbo.RepInvs.DifInvTot) / SUM(dbo.RepInvs.VtsTot) * 100 end AS mermainv

Tambien puedes usar:

isnull(SUM(dbo.RepInvs.DifInvTot) / nullif(SUM(dbo.RepInvs.VtsTot), 0) *
100, 0) AS mermainv


AMB

"Salvatore" wrote:

Perdon por mi ignorancia estoy haciendo una consulta pero cuando utilizo el
IIF al hacer pa prueba logica me marca el siguiente error
Servidor: mensaje 170, nivel 15, estado 1, línea 3
Línea 3: sintaxis incorrecta cerca de '='.

la sentencia sql es mas o menoa asi

SELECT dbo.RepInvs.FciaID,
IIF(SUM(dbo.RepInvs.VtsTot) = 0, 0,
SUM(dbo.RepInvs.DifInvTot) / SUM(dbo.RepInvs.VtsTot) * 100) AS mermainv
From ...

por fav alguien echeme la mano de ante mano gracias
Respuesta Responder a este mensaje
#2 Salvatore
17/02/2006 - 22:01 | Informe spam
oye alejandro muchas gracias por tu ayuda pero es que esa consulta la quiero
meter como una vista o como priodria validar si el campo es cero que no
efectue la division ya que esto me arrojaria un error como le haria
Respuesta Responder a este mensaje
#3 Alejandro Mesa
18/02/2006 - 18:06 | Informe spam
Salvatore,

Ambas versiones funcionaran correctamente. La expresion "case" es similar a
la expresion logica IIF.

Ejemplo:

declare @i int, @j int

set @i = 4
set @j = 2

select case when @j = 0 then 0 else @i / @j end
select isnull(@i / nullif(@j, 0), 0)

set @i = 4
set @j = 0

select case when @j = 0 then 0 else @i / @j end
select isnull(@i / nullif(@j, 0), 0)
go


AMB

"Salvatore" wrote:

oye alejandro muchas gracias por tu ayuda pero es que esa consulta la quiero
meter como una vista o como priodria validar si el campo es cero que no
efectue la division ya que esto me arrojaria un error como le haria
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida