[Pgsql-ayuda] Re: tabla bidimensional

Manuel Sugawara masm@fciencias.unam.mx
04 Jun 2003 17:59:49 -0500


Mart=EDn Marqu=E9s <mmarques@unl.edu.ar> writes:

> On Mi=E9 04 Jun 2003 11:50, <> wrote:
> > estimado mmarques:
> > llamo tabla bidimensional a aquella en la que mostramos un valor
> > (muchas veces el n=FAmero de registros de la base de datos) que
> > satisfacen dos condiciones de consulta. Por ejemplo el n=FAmero de
> > alumnos que aprueban un curso clasificados segun el sexo y el a=F1o. Al=
go
> > as=ED:
> >
> > 	varones  mujeres
> > 1998      12       23
> > 1999      10       12
> > 2000      23       32
> >
> > habiendo en la tabla los campos:
> > a=F1o (entero), sexo (texto), aprueba(verdadero,falso)
> >
> > A esto, en M$Access le llaman consulta de referencias cruzadas , y en
> > SQL utiliza una funci=F3n PIVOT desconocida por m=ED.
> > Espero que con esta informaci=F3n sepas qu=E9 es exactamente lo que qui=
ero
> > hacer Un cordial saludo
>=20

Para que salga algo como lo que quieres puedes usar m=E1s o menos
un query como el siguiente (asumiendo que tu tabla se llama
calificaciones):

SELECT a=F1o, sum(hombres) as hombres, sum(mujeres) as mujeres FROM=20
(
  SELECT a=F1o, 0 as hombres, count(*) as mujeres=20
    FROM calificaciones=20
   WHERE sexo =3D 'f' and aprobado GROUP BY a=F1o, sexo, aprobado=20
UNION ALL=20
  SELECT a=F1o, count(*) as hombres, 0 as mujeres=20
    FROM calificaciones
   WHERE sexo =3D 'm' and aprobado GROUP BY a=F1o, sexo, aprobado
) x GROUP BY a=F1o;

Untested, umh .. tal vez se podr=EDa hacer un poco m=E1s sencillo ???

Saludos,
Manuel.