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.


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to