on 04-28-2015 9:49 PM
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
1000040 | 20150324 000000 |
1000040 | 20150317 000000 |
1000040 | 20150303 000000 |
1000040 | 20150310 000000 |
1000043 | 20150331 000000 |
1000043 | 20150310 000000 |
1000043 | 20150303 000000 |
1000043 | 20150324 000000 |
1000043 | 20150317 000000 |
1000044 | 20150302 000000 |
1000044 | 20150309 000000 |
1000044 | 20150330 000000 |
1000044 | 20150323 000000 |
1000044 | 20150316 000000 |
1000046 | 20150309 000000 |
1000046 | 20150302 000000 |
1000046 | 20150330 000000 |
1000046 | 20150316 000000 |
1000046 | 20150323 |
Muchas Gracias por su ayuda.
Saludos
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)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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,
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)
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)
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.