Как преобразовать строки в два столбца в одной и той же таблице кустов
Это таблица:
|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», но все значения получил в виде списка.