SQL Server - Ayuda con una consulta en SQL Server

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 16 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda con una consulta en SQL Server

Publicado por Eduardo (1 intervención) el 01/10/2019 00:54:16
Estimados:

Necesito de su apoyo en realizar una consulta en T-Sql.

Tengo 2 tablas que se encuentran en 2 bd diferentes, de una obtengo info de clientes en mora y de la otra las gestiones de clientes en mora realizadas. De la primera tabla saco el numero de clientes en mora de forma diaria y la voy guardando en una pivot y las gestiones también. Por Ejemplo, en el día 2 del mes tengo 15 mil clientes en mora y gestionados tengo 5 mil, ya en el día 20 del mes tengo 16 mil clientes y si se gestiona a un cliente que días antes no se había gestionado, este se ve reflejado tanto en el mismo día como en los días posteriores que ya pasaron aumentando así los gestionados de los primeros días y no debería de ser así, debería de contarme a partir de ese día que realizo la gestión en el día 20.

Código para obtener clientes con días de atraso (Mora)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select fec_dat,cod_cli,dia_atr,Región
into #G2 
from [BD].[dbo].[Data_Diaria] a
where  a.fec_dat between '20190901' and '20190929'
 
select day(fec_dat) Día ,a.Región,
COUNT(distinct(a.cod_cli)) Clientes1a30
into #G4
from #G2 a
where dia_atr between 1 and 30
group by a.fec_dat,a.Región
 
select *
from ( select Día, Región, Clientes1a30 from #G4)  as SourceTable
PIVOT (sum(Clientes1a30) for Día in ([1],[2],[3],[4],[5],[6],[7],
[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],
[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31])) as PivotTable


En este parte del código cruzamos los clientes en mora con la tabla de gestiones, pero como ya expuse anteriormente, si un cliente no a sido gestionado en los primeros días y le hacen gestión en los días posteriores, esa gestión se replica desde el día que el cliente estuvo en mora.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
------para obtener el código del cliente
select a.*, b.idCliente
into #Gestion 
from #G2 a
left join [Gestiones].[dbo].[Clientes] b
on a.cod_cli = b.codigo
 
 
 
select DAY(a.fec_dat)Día, a.Región,
COUNT(distinct (a.cod_cli)) Gestionado1a30
into #G1a30 
from  #Gestion a
left join [Gestiones].[dbo].[Registro_Actividades] c
on a.idCliente = c.idCliente
where a.dia_atr between 1 and 30
and c.fecha between '20190901' and  '20190929' ------Rango del mes presente
and c.idActividad in ('2','9','12')
group by a.fec_dat,a.Región, a.Agencia
 
select *
from ( select Día, Región, Gestionado1a30 from #G1a30)  as SourceTable
PIVOT (sum(Gestionado1a30) for Día in ([1],[2],[3],[4],[5],[6],[7],
[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],
[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31])) as PivotTable


Lo que busco es que modificación tendría que hacer a mi código, sobre todo a la ultima parte, para que cuando por ejemplo si un cliente entra en mora el día 2 del mes y el día 10 le hacen gestión solo a partir de ese día en adelante le contabilice como gestionado y no en días atrás .

A la espera de sus comentarios.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder