Filtrar por fecha, con o sin parametros?

15/11/2006 - 21:45 por Daniel G. Samborski | Informe spam
Hola, no sabia como titular esta consulta...
Espero que me puedan ayudar, paso a describir lo que necesito realizar.

Un select que dependiendo, si le paso o no un parametro realice un filtro
exacto en una fecha o entre dos fechas.

Es como si hubiera un if dentro de un select, si paso una fecha, filtar por
esa fecha, de lo contrario utilizar un between
Habia pensado en algo como esto, pero me muestra siempre el between, le pase
o no una fecha.

select distinct(fecsol) from creditos where
(
(fecsol= @Fecha)
or
(fecsol between (select min(fecsol) from creditos) and (select max(fecsol)
from creditos))
)

¿Alguna sugerencia?

Debo aclarar que no puedo utilizar algo como esto.

if @Fecha <> ''
select * from creditos where fecsol = @Fecha
else
select * from creditos where fecsol between (select min(fecsol) from
creditos) and (select max(fecsol) from creditos)

El motivo es que el select original puede o no recibir varios parametros y
si debo realizar un if por cada fecha seria muy largo y repetiria mucho
codigo.


Daniel.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
15/11/2006 - 22:20 | Informe spam
Trata:

select distinct fecsol
from dbo.creditos
where fecsol between coalesce(@d, 0) and coalesce(@d, '99991231')
go


AMB


"Daniel G. Samborski" wrote:

Hola, no sabia como titular esta consulta...
Espero que me puedan ayudar, paso a describir lo que necesito realizar.

Un select que dependiendo, si le paso o no un parametro realice un filtro
exacto en una fecha o entre dos fechas.

Es como si hubiera un if dentro de un select, si paso una fecha, filtar por
esa fecha, de lo contrario utilizar un between
Habia pensado en algo como esto, pero me muestra siempre el between, le pase
o no una fecha.

select distinct(fecsol) from creditos where
(
(fecsol= @Fecha)
or
(fecsol between (select min(fecsol) from creditos) and (select max(fecsol)
from creditos))
)

¿Alguna sugerencia?

Debo aclarar que no puedo utilizar algo como esto.

if @Fecha <> ''
select * from creditos where fecsol = @Fecha
else
select * from creditos where fecsol between (select min(fecsol) from
creditos) and (select max(fecsol) from creditos)

El motivo es que el select original puede o no recibir varios parametros y
si debo realizar un if por cada fecha seria muy largo y repetiria mucho
codigo.


Daniel.



Respuesta Responder a este mensaje
#2 Daniel G. Samborski
15/11/2006 - 22:46 | Informe spam
Gracias, lo probare.


Daniel.

"Alejandro Mesa" escribió en el
mensaje news:
Trata:

select distinct fecsol
from dbo.creditos
where fecsol between coalesce(@d, 0) and coalesce(@d, '99991231')
go


AMB


"Daniel G. Samborski" wrote:

Hola, no sabia como titular esta consulta...
Espero que me puedan ayudar, paso a describir lo que necesito realizar.

Un select que dependiendo, si le paso o no un parametro realice un filtro
exacto en una fecha o entre dos fechas.

Es como si hubiera un if dentro de un select, si paso una fecha, filtar
por
esa fecha, de lo contrario utilizar un between
Habia pensado en algo como esto, pero me muestra siempre el between, le
pase
o no una fecha.

select distinct(fecsol) from creditos where
(
(fecsol= @Fecha)
or
(fecsol between (select min(fecsol) from creditos) and (select
max(fecsol)
from creditos))
)

¿Alguna sugerencia?

Debo aclarar que no puedo utilizar algo como esto.

if @Fecha <> ''
select * from creditos where fecsol = @Fecha
else
select * from creditos where fecsol between (select min(fecsol) from
creditos) and (select max(fecsol) from creditos)

El motivo es que el select original puede o no recibir varios parametros
y
si debo realizar un if por cada fecha seria muy largo y repetiria mucho
codigo.


Daniel.



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