Как преобразовать строки в два столбца внутри одной таблицы улья - PullRequest
0 голосов
/ 16 ноября 2018

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

Это таблица:

 |ID  | type  | value |
 |id0 | ACC   | K0    |
 |id0 | PCC   | K2    |
 |id0 | PCC   | HZ    |
 |id0 | ABB   | MM    |
 |id0 | PBB   | L10   |
 |id1 | ACC   | M5    |
 |id1 | PBB   | 05    |

Все столбцы являются строками.Я хочу переставить эту таблицу таким образом: столбец «тип» будет разделен на столбец только из первой буквы, а уникальные значения остальной части «тип» станут новыми столбцами со значениями столбца «значение».Я пытаюсь получить:

 |ID  | type1| CC | BB |
 |id0 | A    | K0 | MM |
 |id0 | P    | K2 | L10|
 |id0 | P    | HZ |    |
 |id1 | A    | M5 |    |
 |id1 | P    |    | 05 |

Я использовал оператор Case для создания столбцов:

SELECT ID, 
substring(type,1,1) AS type1, 
CASE WHEN type LIKE '%CC' THEN value END AS CC, 
CASE WHEN type LIKE '%BB' THEN value END AS CAT
FROM tb1

Но я получаю такое же количество строк:

 |ID  |type1| CC  |BB  |
 |id0 | A   | K0  |NULL| 
 |id0 | P   | K2  |NULL|
 |id0 | P   | HZ  |NULL|
 |id0 | A   |NULL |MM  |
 |id0 | P   |NULL |L10 |
 |id1 | A   | M5  |NULL|
 |id1 | P   |NULL |05  |

Как я могу уменьшить количество строк.Для моего примера, внутри 7 строк я мог получить 5.

Я использовал «COLLECT_SET», но все значения получил в виде списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...