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 по дате отправления: