Re[2]: Filas a columnas

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
>>
>>

In response to

Responses

Browse pgsql-es-ayuda by date

  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