Re: Transposing data

Поиск
Список
Период
Сортировка
От Alexander Dederer
Тема Re: Transposing data
Дата
Msg-id 9ead2o$1rd7$1@news.tht.net
обсуждение исходный текст
Список pgsql-sql
Hans-J?rgen Sch?nig wrote:

> I want the values in column label to be displayed in the a-axis. Is
> there an easy way to transform the data:
> Here is the input data:
>  age_code | label | count
> ----------+-------+-------
>  age_1    | 30k   |     1
>  age_1    | 50k   |     2
>  age_1    | more  |     2
>  age_2    | 40k   |     2
>  age_3    | 40k   |     1
> 
> I want the result to be:
> 
> age_code | 30k | 40k | 50k  | more
> -----------------------
> age_1       | 1      |         |    2   | 1
> age_2       |         |      2 |
> age_3       |          |     1 |         |
> 
> Is there any easy way to do the job or do I have to write a PL/pgSQL
> function?

Got it:
# SELECT * FROM aaa;age_code | label | count
----------+-------+-------age_1    | 30k   |     1age_1    | 50k   |     2age_1    | more  |     2age_2    | 40k   |
2age_3    | 40k   |     1
 

-------
SELECT  s0.age_code,  (SELECT count FROM aaa  s1 WHERE s1.age_code = s0.age_code AND s1.label = 
'30k') as "30k", (SELECT count FROM aaa  s1 WHERE s1.age_code = s0.age_code AND s1.label = 
'40k') as "40k", (SELECT count FROM aaa  s1 WHERE s1.age_code = s0.age_code AND s1.label = 
'50k') as "50k", (SELECT count FROM aaa  s1 WHERE s1.age_code = s0.age_code AND s1.label = 
'more')  as "more"
FROM aaa s0 
GROUP BY s0.age_code;
age_code | 30k | 40k | 50k | more
----------+-----+-----+-----+------age_1    |   1 |     |   2 |    2age_2    |     |   2 |     |age_3    |     |   1 |
  |
 
(3 rows)


Alexander Dederer.


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

Предыдущее
От: "Ловпаче Айдамир"
Дата:
Сообщение: Why indexes are not used when scanning from functions?
Следующее
От: BOUCHPAN-LERUST-JUERY Lionel
Дата:
Сообщение: Help with ECPG on debian Potato