Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Intercambiar columnas por valores

Estas en el tema de Intercambiar columnas por valores en el foro de SQL Server en Foros del Web. Buenas a todos, Tengo una Tabla que se llama "Ficha" en la que aparecen los siguientes campos: NOMBRE................Piscina..........Polideporti vo..........Tenis..........Campo.de.futbol Juan.Macias........2016-01-10......2016-01-15...........NULL...................NULL Ramon.Salcedo...2015-12-17.............NULL..........2016-01-20........2016-01-15 Damian.Ruiz.............NULL...........2016-01-22...........NULL..............2016-01-23 Julieta.Gonzalez.......NULL...........2015-12-20......2016-01-10.............NULL Marta.Rojas........2016-01-16.............NULL..........2016-01-23.............NULL Jose.Mayor...............NULL..................NUL ...
  #1 (permalink)  
Antiguo 25/01/2016, 15:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 0
Intercambiar columnas por valores

Buenas a todos,

Tengo una Tabla que se llama "Ficha" en la que aparecen los siguientes campos:

NOMBRE................Piscina..........Polideporti vo..........Tenis..........Campo.de.futbol
Juan.Macias........2016-01-10......2016-01-15...........NULL...................NULL
Ramon.Salcedo...2015-12-17.............NULL..........2016-01-20........2016-01-15
Damian.Ruiz.............NULL...........2016-01-22...........NULL..............2016-01-23
Julieta.Gonzalez.......NULL...........2015-12-20......2016-01-10.............NULL
Marta.Rojas........2016-01-16.............NULL..........2016-01-23.............NULL
Jose.Mayor...............NULL..................NUL L...............NULL..............2016-01-22
...

Y quiero transformarla en una tabla en la que en vez de las instalaciones y de las personas que accedieron a estas, dependan de las instalaciones y las fechas por semanas de la gente que accedió:

SEMANA................Piscina..........Polideporti vo..........Tenis..........Campo.de.futbol
W51............Ramon.Salcedo...............NULL... ............NULL.....................NULL
W51.......................NULL...........Julieta.G onzalez......NULL.....................NULL
W01................Juan.Macias................NULL ...............NULL......................NULL
W01.......................NULL.................... NULL........Julieta.Gonzalez.........NULL
W02.......................NULL.............Juan.Ma cias...........NULL......................NULL
W02.......................NULL.................... NULL...............NULL..............Ramon.Salcedo
W02..............Marta.Rojas..................NULL ...............NULL......................NULL
W03.......................NULL...................N ULL........Ramon.Salcedo.............NULL
W03.......................NULL............Damian.R uiz...........NULL.....................NULL
W03.......................NULL...................N ULL...............NULL..............Damian.Ruiz
W03.......................NULL...................N ULL..........Marta.Rojas.................NULL
W03.......................NULL...................N ULL...............NULL................Jose.Mayor



Estaba pensando en utilizar UNIONs y ejecutar miles de consultas, pero no se ni por donde empezar. ¿Me puede echar alguien una mano? Muchas gracias

Última edición por iori_346; 25/01/2016 a las 15:34
  #2 (permalink)  
Antiguo 26/01/2016, 06:35
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Intercambiar columnas por valores

Claramente la estructura (ambas) no es la mejor estas generando demasiada información innecesaria si acceden 50.000 personas a un recinto, tendrás 50.000 filas con 5 campos donde 3 de ellos es null en el peor de los casos, con una tabla semana, persona, recinto debiese bastar.... Pero ese es otro tema


Luego debes hacer un MERGE, si el dato del SELECT no está en tu tabla final haces el INSERT si está haces un UPDATE del campo

INSERT INTO SELECT


MERGE


Para calcular el num de semana es
Código SQL:
Ver original
  1. SELECT DATEPART ( week , '2016-01-15')
por si no lo tenías

Etiquetas: columnas, fecha, intercambiar, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.