| From: | Miguel Bernilla Sánchez <mbernilla(at)sedapal(dot)com(dot)pe> |
|---|---|
| To: | "Eugenio Segura" <eugenio(dot)segura(at)gmail(dot)com> |
| Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
| Subject: | Re[2]: Filas a columnas |
| Date: | 2007-01-24 21:47:07 |
| Message-ID: | 1343442823.20070124164707@sedapal.com.pe |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-es-ayuda |
============
Con fecha Miércoles, 24 de Enero de 2007, 04:13:57 p.m., escribió:
> me da error de sintaxis cerca del periodo1 q sera?
Lo había probado en Oracle y todo OK. :(
Lo simulé en postgreSQL y efectivamente me mostraba error en
sintaxis... Modifiqué el queryl... y ahora sí 100% garantizado que
corre en PostgreSQL.
select v2.nombre,v2.materia,max(v2.periodo1),max(v2.periodo2),max(v2.periodo3)
from (select v.nombre,v.materia,
case when v.periodo = 0 then v.nota end as periodo1,
case when v.periodo = 1 then v.nota end as periodo2,
case when v.periodo = 2 then v.nota end as periodo3
from (select nombre , materia ,periodo,nota
from alumno) v) v2
group by v2.nombre,v2.materia;
P.D.: Siempre una copia a la lista...
> El 24/01/07, Miguel Bernilla Sánchez<mbernilla(at)sedapal(dot)com(dot)pe> escribió:
>>
>> ============
>> Con fecha Miércoles, 24 de Enero de 2007, 02:58:01 p.m., escribió:
>>
>> > Tengo una tabla de alumnos y la nota digamos...
>> > Estudiantes:
>> > Nombre Nota Periodo Materia
>> > Eugenio 60 0 Matematica
>> > Eugenio 70 1 Matematica
>> > Eugenio 80 2 Matematica
>> > Eugenio 61 0 Español
>> > Eugenio 71 1 Español
>> > Eugenio 81 2 Español
>>
>> > Obiamente otros datos mas...
>> > pero lo q necesito es obtener esto
>>
>> > Nombre Nota Nota Nota Materia
>> > Eugenio 60 70 80 Matematica
>> > Eugenio 61 71 81 Español
>>
>> > intente hacer 3 joins en la misma tabla pero dura demaciado y se traba
>> > el programa, porq son muchos alumnos
>> > alguien sabe una mejor forma de hacerlo?
>>
>> con esto te irá de perlas...
>>
>> select v2.nombre,v2.materia,max(v2.periodo1),max(v2.periodo2),max(v2.periodo3)
>> from (select v.nombre,v.materia,
>> case when v.periodo = 0 then v.nota end periodo1,
>> case when v.periodo = 1 then v.nota end periodo2,
>> case when v.periodo = 2 then v.nota end periodo3
>> from (select nombre , materia ,periodo,nota
>> from alumno) v) v2
>> group by v2.nombre,v2.materia;
>>
>> servido...
>>
>>
>> > ---------------------------(fin del
>> > mensaje)---------------------------
>> > TIP 9: el optimizador ignorará el uso de recorridos de índice si los
>> > tipos de datos de las columnas no coinciden
>>
>>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Felipe de Jesús Molina Bravo | 2007-01-24 21:51:57 | %error en trigger |
| Previous Message | Alvaro Herrera | 2007-01-24 21:31:50 | Re: capacidad de tablas |