MySQL - covertir campo a columna

   
Vista:

covertir campo a columna

Publicado por diego (1 intervención) el 24/03/2011 02:22:53
Necesito realizar una consulta y q me muestre de la siguiente forma.

Tengo la tabla (instrumentos___2)
mysql> select * from instrumentos__2
-> ;
+-------+------+-------------+
|N_preg | Nota | Id_clase_FK |
+-------+------+-------------+
| 1 | 7 | 8704 |
| 2 | 7 | 8704 |
| 3 | 7 | 8704 |
| 4 | 7 | 8704 |
| 5 | 7 | 8704 |
| 6 | 7 | 8704 |
| 7 | 7 | 8704 |
| 8 | 7 | 8704 |
| 1 | 3 | 5330 |
| 2 | 3 | 5330 |
| 3 | 3 | 5330 |
| 4 | 3 | 5330 |
| 5 | 3 | 5330 |
| 6 | 3 | 5330 |
| 7 | 3 | 5330 |
| 8 | 3 | 5330 |
| 1 | 12 | 5323 |
| 2 | 12 | 5323 |
| 3 | 12 | 5323 |
| 4 | 12 | 5323 |
| 5 | 12 | 5323 |
| 6 | 12 | 5323 |
| 7 | 12 | 5323 |
| 8 | 12 | 5323 |
| 1 | 3 | 5330 |
| 2 | 3 | 5330 |
| 3 | 3 | 5330 |
| 4 | 3 | 5330 |
| 5 | 3 | 5330 |
| 6 | 3 | 5330 |
| 7 | 3 | 5330 |
| 8 | 3 | 5330 |
| 1 | 12 | 6177 |
| 2 | 12 | 6177 |
| 3 | 12 | 6177 |
| 4 | 12 | 6177 |
| 5 | 12 | 6177 |
| 6 | 12 | 6177 |
| 7 | 12 | 6177 |
| 8 | 12 | 6177 |
+-------+------+-------------+

Necesito q al realizar la consulta salga asi
+-------------+------+------+------+------+------+
| Id_clase_FK | P1 | p2 | p3 | p4 | p5 |...p8
+-------------+------+------+------+------+------+
| 5323 | 12 | 12 | 12 | 12 | 12 |
| 5330 | 6 | 6 | 6 | 6 | 6 |
| 6177 | 12 | 12 | 12 | 12 | 12 |
| 8704 | 7 | 7 | 7 | 7 | 7 |
+-------------+------+------+------+------+------+

esa consulta la logre asi:
mysql> select Id_clase_FK,
-> sum(if(N_preg=1,Nota,Null)) as P1,
-> sum(if(N_preg=2,Nota,Null)) as p2,
-> sum(if(N_pregg=3,Nota,Null)) as p3,
-> sum(if(N_pre=4,Nota,Null)) as p4,
-> sum(if(N_preg=5,Nota,Null)) as p5
-> from instrumentos__2
-> group by Id_clase_FK;

pero necesito alguna forma de no crear tantos IF ya q tengo una tabla que tien 58 preguntas, y me tocaria hacer 58 IF, si hay alguna forma ya sea con while u otra forma les agradesco.
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

covertir campo a columna

Publicado por emerson_palacios (29 intervenciones) el 26/03/2011 17:57:50
hummm. Pero para que necesitas que el select te muestre asi ???. si lo vas a mostrar en una aplicacion win32 o web me imagino que lo metereras en una grilla solo basta con hacer un while que cambie cada vez que cambie el id_clase_fk. lo que tu quieres hacer la verdad no veo la manera de hacerlo con una simple consulta podria ser con un procedimiento almacenado levantando un cursor y bueno cosas mas complejas. a ver si te sirve.
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