Re: transposing data for a view

From: jeremy(at)wundt(dot)psychiatry(dot)uiowa(dot)edu (H Jeremy Bockholt)
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: transposing data for a view
Date: 2001-10-31 18:27:47
Message-ID: b773797b.0110311027.3465f8b1@posting.google.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi,
I see how your idea could work--the only thing I would change would
be region needs to be scanid on the first line; however,
I'm using PostgreSQL v7.03, so I can not do subqueries within FROM clause.

Other than creating a temporary table, is there a way to
restructure this solution to get around this limitation?

thanks,
jeremy

Arian Prins <prinsarian(at)zonnet(dot)nl> wrote in message news:<3BDFAD88(dot)6BB058DA(at)zonnet(dot)nl>...
> H Jeremy Bockholt schreef:
>
> > I have a generalized table:
> >
> > scanid | region | volume
> > -------------------------
> > 1 A 34.4
> > 1 B 32.1
> > 1 C 29.1
> > 2 A 32.4
> > 2 B 33.2
> > 2 C 35.6
> > .
> > .
> > .
> >
> > I want to create a flattened out view that looks like the following:
> >
> > scanid | A_volume | B_volume | C_volume
> > ----------------------------------------
> > 1 34.4 32.1 29.1
> > 2 32.4 33.2 35.6
> > .
> > .
> > .
> >
> > How do I correctly/efficiently construct a psql query to
> > pivot/transpose the data? I am using postgreSQL version 7.0.x
> >
> > thanks,
> > Jeremy
>
> Try This:
>
> select region, sum(a_volume) AS a_volume,
> sum(b_volume) AS b_volume,
> sum(c_volume) AS c_volume
> from (
> select
> scanid,
> volume AS a_volume,
> 0 AS b_volume,
> 0 AS c_volume
> from mytable
> where region = A
> UNION
> select
> scanid,
> 0 AS a_volume,
> volume AS b_volume,
> 0 AS c_volume
> from mytable
> where region = B
> UNION
> select
> scanid,
> 0 AS a_volume,
> 0 AS b_volume,
> volume AS c_volume
> from mytable
> where region = C
> ) tmp
>
> (you might have to specifically typecast the zero's)
>
> It would probably also be possible using CASE-statements. This is just
> _one_ idea.
>
> Arian.

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message James Orr 2001-10-31 19:59:02 Re: transposing data for a view
Previous Message Stéphane Chomat 2001-10-31 09:06:22 Primary key with oid + name : error, which solution ?