Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Query con Iif y '' en SQL Server

Estas en el tema de Query con Iif y '' en SQL Server en el foro de Bases de Datos General en Foros del Web. Hola. Estoy tratando de hacer una consulta, y tengo que incluirle un Iif que pregunte, si un campo string esta vacio (NO nulo, vacio), que ...
  #1 (permalink)  
Antiguo 22/03/2005, 14:03
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 20 años, 3 meses
Puntos: 13
Query con Iif y '' en SQL Server

Hola. Estoy tratando de hacer una consulta, y tengo que incluirle un Iif que pregunte, si un campo string esta vacio (NO nulo, vacio), que muestre otro. Pero me tira error cuando pregunto utilizando las comillas simples. Aca les va la consulta

Código:
SELECT	 dbo.ProductosRegionales.Descripcion, dbo.AgregadoValor.CantidadDisponible, Iif(dbo.UnidadesMedidas.Numerador = '', 
dbo.UnidadesMedidas.IdUnidadMedida, Iif(dbo.UnidadesMedidas.Denominador = '', dbo.UnidadesMedidas.Numerador, 
dbo.UnidadesMedidas.Numerador + '/' + dbo.UnidadesMedidas.Denominador)) AS UnidadMedida, dbo.AgregadoValor.CantidadProductores, 
dbo.AgregadoValor.CantidadAgroLocales, dbo.AgregadoValor.CantidadAgroExtra, dbo.AgregadoValor.MOFamiliar, 
dbo.AgregadoValor.MORemuneradaPermanente, dbo.AgregadoValor.MORemuneradaTransitoria, dbo.AgregadoValor.IdPrograma, 
dbo.AgregadoValor.IdINTA, dbo.AgregadoValor.NumeroProyecto, dbo.AgregadoValor.IdProductoRegional, dbo.AgregadoValor.Fecha, 
dbo.UnidadesMedidas.Numerador, dbo.UnidadesMedidas.Denominador, dbo.AgregadoValor.IdUnidadMedida
FROM		 dbo.AgregadoValor INNER JOIN
dbo.ProductosRegionales ON dbo.AgregadoValor.IdProductoRegional = dbo.ProductosRegionales.IdProductoRegional INNER JOIN
dbo.UnidadesMedidas ON dbo.AgregadoValor.IdUnidadMedida = dbo.UnidadesMedidas.IdUnidadMedida
Espero su respuesta. Saludos. Lucas
  #2 (permalink)  
Antiguo 22/03/2005, 14:57
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años, 6 meses
Puntos: 7
Tienes que usar CASE WHEN no IIF
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 23/03/2005, 07:33
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 11 meses
Puntos: 0
SELECT dbo.ProductosRegionales.Descripcion, dbo.AgregadoValor.CantidadDisponible, (case dbo.UnidadesMedidas.Numerador when '' then
dbo.UnidadesMedidas.IdUnidadMedida else (case dbo.UnidadesMedidas.Denominador when '' then dbo.UnidadesMedidas.Numerador else
dbo.UnidadesMedidas.Numerador + '/' + dbo.UnidadesMedidas.Denominador end) end) AS UnidadMedida, dbo.AgregadoValor.CantidadProductores,
dbo.AgregadoValor.CantidadAgroLocales, dbo.AgregadoValor.CantidadAgroExtra, dbo.AgregadoValor.MOFamiliar,
dbo.AgregadoValor.MORemuneradaPermanente, dbo.AgregadoValor.MORemuneradaTransitoria, dbo.AgregadoValor.IdPrograma,
dbo.AgregadoValor.IdINTA, dbo.AgregadoValor.NumeroProyecto, dbo.AgregadoValor.IdProductoRegional, dbo.AgregadoValor.Fecha,
dbo.UnidadesMedidas.Numerador, dbo.UnidadesMedidas.Denominador, dbo.AgregadoValor.IdUnidadMedida
FROM dbo.AgregadoValor INNER JOIN
dbo.ProductosRegionales ON dbo.AgregadoValor.IdProductoRegional = dbo.ProductosRegionales.IdProductoRegional INNER JOIN
dbo.UnidadesMedidas ON dbo.AgregadoValor.IdUnidadMedida = dbo.UnidadesMedidas.IdUnidadMedida

Salu2.
  #4 (permalink)  
Antiguo 23/03/2005, 09:49
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 20 años, 3 meses
Puntos: 13
De acuerdo Anduvo el CASE!!!

Hola. Estuve probando la consulta y anda de maravillas!!! Muchas gracias Mickel y cableh, por su tiempo.

Saludos cordiales. Lucas
  #5 (permalink)  
Antiguo 28/02/2011, 14:04
 
Fecha de Ingreso: abril-2007
Mensajes: 20
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Query con Iif y '' en SQL Server

Cita:
Iniciado por Mickel Ver Mensaje
Tienes que usar CASE WHEN no IIF
Y en el caso que la comparación no sea de igual (=)?
por ejemplo para un rango en un campo int.
  #6 (permalink)  
Antiguo 01/03/2011, 09:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Query con Iif y '' en SQL Server

Cita:
Iniciado por freezer27 Ver Mensaje
Y en el caso que la comparación no sea de igual (=)?
por ejemplo para un rango en un campo int.

Select case
when campo >1 then valor 1 else valor 2
end as seleccion
from tabla


Se haria de este modo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:33.