У меня есть таблица, которая выглядит примерно так:
WITH
table AS (
SELECT 1 object_id, 234 type_id, 2 type_level UNION ALL
SELECT 1, 23, 1 UNION ALL
SELECT 1, 24, 1 UNION ALL
SELECT 1, 2, 0 UNION ALL
SELECT 1, 2, 0 UNION ALL
SELECT 2, 34, 1 UNION ALL
SELECT 2, 46, 1 UNION ALL
SELECT 2, 465, 2 UNION ALL
SELECT 2, 349, 2 UNION ALL
SELECT 2, 4, 0 UNION ALL
SELECT 2, 3, 0 )
SELECT
object_id,
type_id,
type_level
FROM
table
Теперь я пытаюсь создать три новых столбца _2 _, _ 3 _, _ 4_ для каждого объекта и объединить type_id соответствующего уровня типов в этот массив (я не ищу строку, разделенную запятыми).
Итак, моя результирующая таблица должна выглядеть следующим образом:
+----+--------------------+--------------------+--------------------+
| id | type_level_0_array | type_level_1_array | type_level_2_array |
+----+--------------------+--------------------+--------------------+
| 1 | 2 | 24,23 | 234 |
+----+--------------------+--------------------+--------------------+
| 2 | 3,4 | 34,46 | 465,349 |
+----+--------------------+--------------------+--------------------+
Есть ли способ добиться этого?
Обновлять:
Хотя кажется, что мой type_id имеет определенный шаблон, например. типы уровня 0 имеют длину 1, типы уровня 1 имеют длину 2 и так далее, в моем реальном наборе данных такого шаблона нет. Идентификация уровня возможна только при просмотре type_level
любой строки.