cancel
Showing results for 
Search instead for 
Did you mean: 

Consulta SQL por Fecha

0 Kudos

Buenas Tardes,

   Quisiera realizar  una consulta para todos los clientes  que dependiendo de su fecha de ingreso muestre el día de visita en un rango de fecha establecido.

ejemplo:

La primera columna es el codigo del cliente  y la segunda son los dias de visita que le corresponde a ese rango de fecha establecida

100004020150324 000000
100004020150317 000000
100004020150303 000000
100004020150310 000000
100004320150331 000000
100004320150310 000000
100004320150303 000000
100004320150324 000000
100004320150317 000000
100004420150302 000000
100004420150309 000000
100004420150330 000000
100004420150323 000000
100004420150316 000000
100004620150309 000000
100004620150302 000000
100004620150330 000000
100004620150316 000000
100004620150323

Muchas Gracias por su ayuda.

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

Buenas Tardes

  Ya hice la consulta con un solo cliente,  pues ahora quiero hacerlo con un rango de clientes o con todos los que contenga la tabla, alguna idea qu eme aporten?

saludos,

declare

@fec_inicio DateTime,

@fec_fin DateTime,

@dia_visi int,

@otra int

set @otra =(select CardCode from OCRD where CardCode='12500')

set @dia_visi =(select u_ts_diav from OCRD where CardCode='12500')

select @fec_inicio = '20150401', @fec_fin = '20150430'

;WITH FECHAS(fecha) AS (

SELECT @fec_inicio fecha

UNION ALL

SELECT DATEADD(day, 1, fecha) fecha

FROM FECHAS

WHERE fecha < @fec_fin

)

select @otra, fecha from FECHAS

where datepart(dw, fecha) = @dia_visi + 1

OPTION (MaxRecursion 0)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas tardes

Prueba lo siguiente:


declare

@fec_inicio DateTime,

@fec_fin DateTime,

@dia_visi int,

@otra varchar(50)

declare @FechasCli table

(

    Cliente [varchar](50) not null,

    Fecha [datetime] not null

)

declare Curr cursor for

select CardCode from OCRD where CardType='C' and isnull(u_ts_diav,0)<>0

open Curr

    fetch next from Curr into @otra

       

        while @@fetch_status = 0

        begin

            set @dia_visi =(select u_ts_diav from OCRD where CardCode=@otra)

       

            select @fec_inicio = '20150401', @fec_fin = '20150430'

            ;WITH FECHAS(fecha) AS (

            SELECT @fec_inicio fecha

            UNION ALL

            SELECT DATEADD(day, 1, fecha) fecha

            FROM FECHAS

            WHERE fecha < @fec_fin

            )

           

            insert into @FechasCli

            select @otra, fecha

            from FECHAS

            where datepart(dw, fecha) = @dia_visi + 1

            OPTION (MaxRecursion 0)

           

            fetch next from Curr into @otra

        end

    close Curr

Deallocate Curr

Select * from @FechasCli

Saludos

0 Kudos

Muchísimas gracias por el apoyo, era lo que estaba buscando.

Me funciono.

Saludos,

 

Answers (1)

Answers (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas tardes

Estimado, podría ser mas especifico.

A que se refiere con cantidad de "visitas"?

De que tabla estas extrayendo los campos?

Cual es tu código actual?

Mientras más información entregues, más fácil se puede ayudar.

Atte.

0 Kudos

Buenas estimado,

  Gracias por su respuesta, los datos los quiero buscar en tabla OCRD, en ella existe un campo llamado u_ts_fechac la cual contiene la fecha de creación o registro del cliente, y otro campo llamado u_ts_diav  la cual contiene los dias de visita  en mi caso esta asi:

1 Lunes

2 Martes

3 Miercoles

4 Jueves

5 Viernes

queremos mostrar según un rango de fecha establecido  los dias (en fecha) que el cliente hay que visitarlo.

y quede armado como lo mostre arriba

codigo cliente y fecha de visita

No tengo nada construido aun, es algo  complicado qu eno no hemos podido armar.

Saludos,

former_member188440
Active Contributor
0 Kudos

Intenta con

select cardcode, cardname, u_ts_diav from ocrd where u_ts_fechac between '[%0]' and '[%1]'

Espero te sirva

0 Kudos

Ya hice la consulta con un solo cliente,  pues ahora quiero hacerlo con un rango de clientes o con todos los que contenga la tabla, alguna idea qu eme aporten?

saludos,

declare

@fec_inicio DateTime,

@fec_fin DateTime,

@dia_visi int,

@otra int

set @otra =(select CardCode from OCRD where CardCode='12500')

set @dia_visi =(select u_ts_diav from OCRD where CardCode='12500')

select @fec_inicio = '20150401', @fec_fin = '20150430'

;WITH FECHAS(fecha) AS (

SELECT @fec_inicio fecha

UNION ALL

SELECT DATEADD(day, 1, fecha) fecha

FROM FECHAS

WHERE fecha < @fec_fin

)

select @otra, fecha from FECHAS

where datepart(dw, fecha) = @dia_visi + 1

OPTION (MaxRecursion 0)

0 Kudos

Ya hice la consulta con un solo cliente,  pues ahora quiero hacerlo con un rango de clientes o con todos los que contenga la tabla, alguna idea qu eme aporten?

saludos,

declare

@fec_inicio DateTime,

@fec_fin DateTime,

@dia_visi int,

@otra int

set @otra =(select CardCode from OCRD where CardCode='12500')

set @dia_visi =(select u_ts_diav from OCRD where CardCode='12500')

select @fec_inicio = '20150401', @fec_fin = '20150430'

;WITH FECHAS(fecha) AS (

SELECT @fec_inicio fecha

UNION ALL

SELECT DATEADD(day, 1, fecha) fecha

FROM FECHAS

WHERE fecha < @fec_fin

)

select @otra, fecha from FECHAS

where datepart(dw, fecha) = @dia_visi + 1

OPTION (MaxRecursion 0)