Re: transposing data for a view

Поиск
Список
Период
Сортировка
От Arian Prins
Тема Re: transposing data for a view
Дата
Msg-id 3BDFAD88.6BB058DA@zonnet.nl
обсуждение исходный текст
Ответ на transposing data for a view  (jeremy@wundt.psychiatry.uiowa.edu (H Jeremy Bockholt))
Список pgsql-sql

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)
ASc_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.



В списке pgsql-sql по дате отправления:

Предыдущее
От: jeremy@wundt.psychiatry.uiowa.edu (H Jeremy Bockholt)
Дата:
Сообщение: Re: transposing data for a view
Следующее
От: Tom Lane
Дата:
Сообщение: Re: View consistency