SQL Server - Ayuda a resolver ejercicio

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

Ayuda a resolver ejercicio

Publicado por erick (4 intervenciones) el 11/12/2019 01:25:25
Estimados buenos días, necesito de su ayuda para resolver el siguiente problema tengo la siguiente tabla data con los siguientes campos y formato:

Data
periodo / credito / clas / saldo
31-01-2016 / 1 / A / 200
28-02-2016 / 1 /B /190
30-03-2016 / 1 /C /190
30-04-2016 / 1 /C /190
30-05-2016 /1 / C /190
30-06-2016 /1 / D /180
30-07-2016 /1 / B / 180
30-08-2016 /1 /A / 150
30-09-2016 /1 /A / 100
30-10-2016 /1 /A /50
30-11-2016 /1 /A /0
30-12-2016 //1 /A /0
y necesito una consulta que me arroje lo siguiente:


credito /Periodo / saldo / 31-01-2016 / 28-02-2016 /30-03-2016/ 30-04-2016/ 30-05-2016/ 30-06-2016
1 /30-03-2016/ 190 / 0 / 0 / 0 / 190 / 190 / 180

etc.
En resumen es como una tabla de referecias cruzadas en donde rescato(periodo ,credito, clas y saldo) de la primera vez que el credito cae en "C" y guardo hacia el lado los saldos posteriores al periodo que guarde, en este caso como la primera vez que esta en "C" es el 30-03-2019 es por esto que los meses anteriores es 0.
Al final es ver como evoluciona el saldo desde que fue por primera vez "c".

espero haber sido claro y que puedan ayudarme.Muchas gracias.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda a resolver ejercicio

Publicado por Isaias (4558 intervenciones) el 11/12/2019 03:42:05
2 cosas, ¿que motor de base de datos?, ¿que avance lleva?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda a resolver ejercicio

Publicado por Erick (4 intervenciones) el 11/12/2019 11:15:06
Sql server y por ahora llevo cero avance.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda a resolver ejercicio

Publicado por Erick (4 intervenciones) el 11/12/2019 18:34:19
Estimados esto tengo hasta el momento pero no se como, ingresar lo de la primera clasificación.
Esto me entrega la tabla pero con toda la información.


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
set language spanish
select CODCRE,
CASE WHEN [Enero 2017] is not null then [Enero 2017] else 0 end as [Enero 2017],
CASE WHEN [Febrero 2017] is not null then [Febrero 2017] else 0 end as [Febrero 2017],
CASE WHEN [Marzo 2017] is not null then [Marzo 2017] else 0 end as [Marzo 2017],
CASE WHEN [Abril 2017] is not null then [Abril 2017]  else 0 end as [Abril 2017],
CASE WHEN [Mayo 2017] is not null then [Mayo 2017] else 0 end as [Mayo 2017],
CASE WHEN [Junio 2017] is not null then [Junio 2017] else 0 end as [Junio 2017],
CASE WHEN [Julio 2017] is not null then [Julio 2017] else 0 end as [Julio 2017],
CASE WHEN [Agosto 2017] is not null then [Agosto 2017] else 0 end as [Agosto 2017],
CASE WHEN [Septiembre 2017] is not null then [Septiembre 2017] else 0 end as [Septiembre 2017],
CASE WHEN [Octubre 2017] is not null then [Octubre 2017] else 0 end as [Octubre 2017],
CASE WHEN [Noviembre 2017] is not null then [Noviembre 2017] else 0 end as [Noviembre 2017],
CASE WHEN [Diciembre 2017] is not null then [Diciembre 2017] else 0 end as [Diciembre 2017],
CASE WHEN [Enero 2018] is not null then [Enero 2018] else 0 end as [Enero 2018]
from
(
select a.codcre,DATENAME (M,b.PERIODO)+ ' ' +DateName(YY,b.PERIODO)AS FECHA,CONVERT(FLOAT,b.SALDO) as SALDOMES
from Data a inner join Data b
on a.codcre=b.codcre
 
group by a.codcre,b.PERIODO,b.SALDO
)T
PIVOT ( SUM(T.SALDOMES)FOR T.FECHA IN
([Enero 2017],[Febrero 2017],[Marzo 2017],[Abril 2017],[Mayo 2017],[Junio 2017],[Julio 2017],[Agosto 2017],[Septiembre 2017],[Octubre 2017],[Noviembre 2017],[Diciembre 2017],[Enero 2018]))PVT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda a resolver ejercicio

Publicado por Isaias (4558 intervenciones) el 11/12/2019 18:48:46
El PIVOT, tiene un limite, ¿Hasta cuantos periodos podrian ser?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda a resolver ejercicio

Publicado por Erick (4 intervenciones) el 11/12/2019 18:51:25
Me gustaría verlo a 24 meses
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda a resolver ejercicio

Publicado por Isaias (4558 intervenciones) el 11/12/2019 20:53:26
Digame si le funciona

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
32
33
34
35
36
37
38
39
40
41
42
declare @periodo table  (Periodo datetime, credito int, clas char(1), saldo money)
insert into @periodo values (
'2016-01-31',  1,'A',  200),
('2016-02-28', 1 ,'B', 190),
('2016-03-30', 1 ,'C', 190),
('2016-04-30',  1 ,'C', 190),
('2016-05-30', 1  ,'C', 190),
('2016-06-30', 1  ,'D', 180),
('2016-07-30', 1  ,'B',  180),
('2016-08-30', 1 ,'A',  150),
('2016-09-30', 1 ,'A',  100),
('2016-10-30', 1 ,'A', 50),
('2016-11-30', 1 ,'A', 0),
('2016-12-30', 1 ,'A', 0)
 
 
SELECT * FROM
(
    SELECT
		Periodo,
        credito,
        clas,
		saldo
    FROM @periodo
) t
PIVOT(
    SUM(saldo)
    FOR periodo IN (
        [2016-01-31],
        [2016-02-28],
        [2016-03-30],
        [2016-04-30],
        [2016-05-30],
        [2016-06-30],
        [2016-07-30],
		[2016-08-30],
		[2016-09-30],
		[2016-10-30],
		[2016-11-30],
		[2016-12-30]
		)
) AS pivot_table;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar