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: | Raw Message | Whole Thread | 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 |