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

Errores con Having y between

Estas en el tema de Errores con Having y between en el foro de SQL Server en Foros del Web. Mi problema es lo siguiente .. deceo que se dentro de un having me seleccione una fecha especifica .... entre la fecha inicial y la ...
  #1 (permalink)  
Antiguo 16/08/2011, 11:24
 
Fecha de Ingreso: abril-2009
Mensajes: 28
Antigüedad: 15 años
Puntos: 0
Errores con Having y between

Mi problema es lo siguiente .. deceo que se dentro de un having me seleccione una fecha especifica .... entre la fecha inicial y la final, pero con una pequeña condicion

HAVING (EncabezadoDeudoresMunicipales.Rut LIKE @Rut AND @Rut IS NOT NULL) OR (@Rut IS NULL) and
case
when @VarFecha = 0 then EncabezadoDeudoresMunicipales.Fecha_Pago Between @fechaDesde And @fechaHasta
when @VarFecha = 1 then EncabezadoDeudoresMunicipales.Fecha_Emision BETWEEN @fechaDesde And @fechaHasta
end

creando una condicion con un case .. me arroja error de sintaxis en el between
Error: Sintaxis incorrecta cerca de la palabra clave 'Between'
error en el primer between

y cuando genero la condicion con un if

if @VarFecha = 1
HAVING ( (EncabezadoDeudoresMunicipales.Rut LIKE @Rut AND @Rut IS NOT NULL) OR (@Rut IS NULL)
and EncabezadoDeudoresMunicipales.Fecha_Emision Between @fechaDesde And @fechaHasta )
else
HAVING ( (EncabezadoDeudoresMunicipales.Rut LIKE @Rut AND @Rut IS NOT NULL) OR (@Rut IS NULL)
and EncabezadoDeudoresMunicipales.Fecha_Pago Between @fechaDesde And @fechaHasta )
end

me arroja error en el Having primero ...
Error : Sintaxis incorrecta cerca de la palabra clave 'HAVING'
en el primer having

alguna sugerencia o ayuda por ahi ?
esto es simplemente para no tener que hacer 2 procedures se podria solucionar de una forma mas facil ... me imagino que existe la posibilidad xD
  #2 (permalink)  
Antiguo 16/08/2011, 12:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Errores con Having y between

Creo que quieres poner el between dentro de tu where dependiendo el case o el if correcto?? si es asi lo que te recomiendo es que hagas un query dinamico

Código SQL:
Ver original
  1. DECLARE @query VARCHAR(MAX)
  2.  
  3. SET @query='select * from tabla where '
  4.  
  5. IF @condicion=1 THEN
  6. BEGIN
  7.    SET @query=@query + '@fecha between fecha1 and fecha2'
  8. END
  9. ELSE
  10.    BEGIN
  11.       SET @query=@query + '@fecha between fecha3 and fecha4'
  12.    END
  13.  
  14. 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
  #3 (permalink)  
Antiguo 16/08/2011, 13:44
 
Fecha de Ingreso: abril-2009
Mensajes: 28
Antigüedad: 15 años
Puntos: 0
Respuesta: Errores con Having y between

La verdad es que queria saber si se puede hacer un .. between o una clase de condicion dentro de un having ...

Tan solo quiero que dependiendo de una variable el "HAVING" agrupe un campo u otro entre 2 rangos de fechas .. sea como sea deberia poder hacerlo con esa logica


aparte intentando crear esa variable en el sql server 2008
creando algo asi

Cita:
if @VarFecha = 1
begin
@query = @query + 'HAVING ( (EncabezadoDeudoresMunicipales.Rut LIKE @Rut AND @Rut IS NOT NULL) OR (@Rut IS NULL)
and EncabezadoDeudoresMunicipales.Fecha_Emision Between @fechaDesde And @fechaHasta )'
end
else
begin
@query = @query + 'HAVING ( (EncabezadoDeudoresMunicipales.Rut LIKE @Rut AND @Rut IS NOT NULL) OR (@Rut IS NULL)
and EncabezadoDeudoresMunicipales.Fecha_Pago Between @fechaDesde And @fechaHasta )'
end
y me sale este error
"Mens 102, Nivel 15, Estado 1, Procedimiento Ing_DeudoresMunicipales_TraerLista_PorRango, Línea 77
Sintaxis incorrecta cerca de '@query'."

indicando algo asi como que no pudiera agregar mas caracteres al campo @query
o algo por el estilo

y gracias por tu respuesta libras ..
  #4 (permalink)  
Antiguo 16/08/2011, 14:04
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Errores con Having y between

Pues no creo que se pueda hacer lo que tu quieres dentro de un HAVING, no lo digo yo, lo dice la AYUDA EN LINEA de SQL Server.
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 16/08/2011, 14:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Errores con Having y between

Cita:
Iniciado por matute69 Ver Mensaje
La verdad es que queria saber si se puede hacer un .. between o una clase de condicion dentro de un having ...

Tan solo quiero que dependiendo de una variable el "HAVING" agrupe un campo u otro entre 2 rangos de fechas .. sea como sea deberia poder hacerlo con esa logica


aparte intentando crear esa variable en el sql server 2008
creando algo asi



y me sale este error
"Mens 102, Nivel 15, Estado 1, Procedimiento Ing_DeudoresMunicipales_TraerLista_PorRango, Línea 77
Sintaxis incorrecta cerca de '@query'."

indicando algo asi como que no pudiera agregar mas caracteres al campo @query
o algo por el estilo

y gracias por tu respuesta libras ..
usa set @query :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: procedurestore, serversql, sql2008
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 21:49.