Разделение столбцов и получение новой таблицы в postgresql - PullRequest
1 голос
/ 29 апреля 2020

У меня есть такая таблица в postgresql:

Time  | id/type  | value

1        A/a       10
2        A/b       15
3        A/c       8
4        A/b       2

И я хочу преобразовать в new_table с макетом:

Time  | id  | a  | b  | c

1      A   10    Null   Null 
2      A   Null  15     Null
3      A   Null  Null    8
4      A   Null  2      Null

Не могли бы вы помочь мне в этом проблема? Я совсем новичок в Sql в целом, поэтому любая помощь приветствуется.

Спасибо !!

1 Ответ

2 голосов
/ 29 апреля 2020

Используйте выражение CASE для каждого столбца:

select "Time", split_part("id/type", '/', 1) id,
  case when split_part("id/type", '/', 2) = 'a' then "value" end a,
  case when split_part("id/type", '/', 2) = 'b' then "value" end b,
  case when split_part("id/type", '/', 2) = 'c' then "value" end c
from tablename

См. demo . Результаты:

| Time | id  | a   | b   | c   |
| ---- | --- | --- | --- | --- |
| 1    | A   | 10  |     |     |
| 2    | A   |     | 15  |     |
| 3    | A   |     |     | 8   |
| 4    | A   |     | 2   |     |
...