Изменить столбцы с PostgreSQL (новичок) - PullRequest
1 голос
/ 14 февраля 2020

Я хотел бы преобразовать базу данных.

Я начинаю с этого ...

    path ; cost; sexe
    42-60 ; 12; male
    42-60; 5; female
    42-61; 3.59; male
    42-62; 13.85; male
    42-62; 2.96; female

... и хотел бы преобразовать его в следующее ...

path; male; female
42-60 ; 12; 5;
42-61; 3.59; 0
42-62; 13.85; 2.96

Я знаю, что должен использовать array_agg , но я не уверен, как использовать это для достижения sh этого.

1 Ответ

0 голосов
/ 14 февраля 2020
create temporary table test as
select * from (values ('42-60', 12, 'male'),
                      ('42-60', 5, 'female'),
                      ('42-61', 3.59, 'male'),
                      ('42-61', 13.85, 'male'),
                      ('42-62', 2.96, 'female')) as t(path, cost, sex);

select path,
       sum(case sex when 'male' then cost else 0 end) as male,
       sum(case sex when 'female' then cost else 0 end) as female
from test group by path;

Это то, что вы ищете?

...