SQL - Transponer

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

Transponer

Publicado por marlon (2 intervenciones) el 01/08/2019 21:21:23
Buenas, soy nuevo en el lenguaje SQL y estoy investigando como puedo transponer una tabla que tiene la siguiente estructura

IMG_20190801_140837

Quisiera dejarla de la siguiente manera

IMG_20190801_141459

Quisiera crear las columnas con las fechas y colocarle a las columnas las calificaciones correspondientes a dichas fechas.

Si menpueden ayudar guiarme u orientarne como podria hacerlo lo agradeceria

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 Joan
Val: 7
Ha aumentado su posición en 4 puestos en SQL (en relación al último mes)
Gráfica de SQL

Transponer

Publicado por Joan (2 intervenciones) el 02/08/2019 08:43:32
Hola Marlon, exactamente que quieres hacer?

Según veo, la fecha es una cadena con formato YYYYMM verdad?

Que motor de base de datos estas utilizando?
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

Transponer

Publicado por Marlon1 (2 intervenciones) el 02/08/2019 16:08:41
estoy usando SQL server management studio v17.1

Quuero transponer las fechas y en las fechas me coloque la calificacion.

Esraba revisando y encontre una manera de resolverlo

Select * from A
Pivot (max(califi) for fecha IN ([201901],[201902],[201903])) pvt


Con eso lo soluciono, ahora el problema es como tengo muchas fechas la data es historica de que manera puedo implementar un WHILE o FOR para que me cambie las fechas en el IN esa si no tengo idea como hacerlo me puedes ayudar
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
sin imagen de perfil
Val: 25
Ha disminuido su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Transponer

Publicado por Olbeup (23 intervenciones) el 04/08/2019 00:23:04
Hola Marlon1

En el PIVOT utilizas YYYYMM lo que puedes hacer es generar un SQL Dinámica de 12 meses aunque el resto de los datos sean NULL, en tu caso es 2019 pues sería
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
SELECT
    FI_ID
    ,[201901]
    ,[201902]
    ,[201903]
    ,[201904]
    ,[201905]
    ,[201906]
    ,[201907]
    ,[201908]
    ,[201909]
    ,[201910]
    ,[201911]
    ,[201912]
  FROM <TuTabla>
    PIVOT
      (
        MAX(CALIFI) FOR FECHA IN
          (
            [201901]
            ,[201902]
            ,[201903]
            ,[201904]
            ,[201905]
            ,[201906]
            ,[201907]
            ,[201908]
            ,[201909]
            ,[201910]
            ,[201911]
            ,[201912]
          )
      ) PVT

También puedes crearte una función pasandole el año te genere la SQL de ese año

Un saludo.
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