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

CASE en cláusula WHERE

Estas en el tema de CASE en cláusula WHERE en el foro de SQL Server en Foros del Web. A ver como lo explico, si una variable es 0 que seleccione todos los valores, sino sólo el valor dado. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver ...
  #1 (permalink)  
Antiguo 28/10/2011, 09:49
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 20 años, 3 meses
Puntos: 12
CASE en cláusula WHERE

A ver como lo explico, si una variable es 0 que seleccione todos los valores, sino sólo el valor dado.
Código SQL:
Ver original
  1. WHERE campo =
  2. CASE @var WHEN 0 THEN ***
  3. ELSE @var END
Aquí el fallo está en '***' que no sé cómo indicar que me lo coja todo; en mi caso bastaría decir que sea mayor que cero porque es un campo de meses.
Saludos y gracias!
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #2 (permalink)  
Antiguo 28/10/2011, 10:37
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, 2 meses
Puntos: 774
Busqueda Respuesta: CASE en cláusula WHERE

if @var=0
begin
select * from tabla
end
else
begin
select * from tabla where id=@var
end


Algo asi???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 28/10/2011, 13:23
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 20 años, 3 meses
Puntos: 12
Respuesta: CASE en cláusula WHERE

¿No se puede hacer con el CASE en el WHERE? Mi consulta es muy grande como para repetirla...
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #4 (permalink)  
Antiguo 28/10/2011, 13:40
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, 2 meses
Puntos: 774
Respuesta: CASE en cláusula WHERE

Si no quieres repetir tu consulta usa un query dinamico

Código SQL:
Ver original
  1. DECLARE @query VARCHAR(MAX)
  2.  
  3. SET @query='select * from tabla'
  4.  
  5. IF @var>=1
  6.   SET @query=@query + 'where id=' + @var
  7.  
  8. EXEC Sp_sqlExec @query

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 29/10/2011, 00:58
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 20 años, 3 meses
Puntos: 12
Respuesta: CASE en cláusula WHERE

Era tan simple que no lo veía. Basta compararlo a sí mismo.
Código SQL:
Ver original
  1. WHERE campo =
  2. CASE @var WHEN 0 THEN campo
  3. ELSE @var END
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge

Etiquetas: case, campos
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 00:57.