Как развернуть таблицу в postgresql? - PullRequest
0 голосов
/ 14 июля 2020

Вот в чем дело, у меня есть эта таблица:

id    rank    price
1     1       100
1     2       200
2     1       300
2     2       100
2     3       200
3     1       300

И я хочу построить что-то вроде этого:

id    price_rank_1    price_rank_2    price_rank_3
1     100             200             NULL
2     300             100             200
3     300             NULL            NULL

Это должно быть довольно просто, просто какой-то случай когда, Idk, но я не могу это понять.

Обновление: я попробовал ответ из Как преобразовать строку в столбец в PostgreSQL приведенной ниже таблице :

select id,
       price filter (where rank=1) as price_rank_1,
       price filter (where rank=2) as price_rank_2,
       price filter (where rank=3) as price_rank_3,
from table

Но вот ошибка:

Invalid operation: syntax error at or near "(" 

1 Ответ

0 голосов
/ 14 июля 2020

Выражение filter должно быть в функции агрегирования:

select id, 
       max(price) filter (where rank = 1) as price_rank_1,
       max(price) filter (where rank = 2) as price_rank_2,
       max(price) filter (where rank = 3) as price_rank_3
  from your_table 
 group by id;
...