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

Que el valor de un campo se convierta en columna

Estas en el tema de Que el valor de un campo se convierta en columna en el foro de Mysql en Foros del Web. Tengo una tabla con los siguientes datos id | anho | valor1 | 01| 2001 | 1234| 01| 2002 | 1334| 01| 2003 | 1244| ...
  #1 (permalink)  
Antiguo 22/05/2008, 15:31
Avatar de fenix4  
Fecha de Ingreso: noviembre-2001
Ubicación: Caracas
Mensajes: 226
Antigüedad: 22 años, 5 meses
Puntos: 1
Pregunta Que el valor de un campo se convierta en columna

Tengo una tabla con los siguientes datos

id | anho | valor1 |

01| 2001 | 1234|
01| 2002 | 1334|
01| 2003 | 1244|
02| 2001 | 2234|
02| 2000 | 2234|
03| 2003 | 2034|
03| 2004 | 2234|
04| 2004 | 2034|

Necesito hacer una consulta que me genere algo así

id | 2000 | 2001 | 2002 | 2003 | 2004

01| 0 | 1234 | 1334 | 1244 | 0
02| 2234 | 2234 | 0 | 0 | 0
03| 0 | 0 | 0 | 2034 | 2234
04| 0 | 0 | 0 | 0 | 2034

Cual es la idea de esto?? que cada vez que agregen un año se agrege una columna, y no se tenga que estar modificando la consulta.

En MS Access se veia algo así que se llamaba TRANSFORM ... PIVOT

Alguien sabe como hacer esto en MySql

Gracias de antemano
__________________
S.L.P.S.
  #2 (permalink)  
Antiguo 23/05/2008, 02:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Que el valor de un campo se convierta en columna

No, la estructura de la tabla debe ser la primera és muchisimo mas eficiente, lo que debes hacer es transformar la salida con programación en el momento de mostrar los datos....

Las consultas de referencias cruzadas de access tienen sus problemas... pero tambien se basan en una tabla con esa estructura.

http://lists.mysql.com/mysql-es/1506

Parece que no hay equivalencia....

Quim
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 19:08.