У меня есть следующая таблица в Postgres
col1 col2 col3 col4
antiTB 96165 | 96166 0.182 | 1 D12491 | D12492
antiTB | antimaleria | antichol 96168 | 96169 | 96170 0.182 | 1 | 2 D12491 | D12492 | D12493
Я хотел бы рекурсивно разделить значения столбца на '|' и создайте новые строки со значениями, выбранными после разделения.
Требуемый вывод:
col1 col2 col3 col4
antiTB 96165 0.182 D12491
antiTB 96166 1 D12492
antiTB 96168 0.182 D12491
antimaleria 96169 1 D12492
antichol 96170 2 D12493
Я пробовал следующий запрос:
select distinct t2.col1, t3.col2, t4.col3, t5.col4
from table t1
cross join lateral unnest(string_to_array(t1.col1,'|')) as t2 (col1)
cross join lateral unnest(string_to_array(t1.col2,'|')) as t3 (col2)
cross join lateral unnest(string_to_array(t1.col3,'|')) as t4 (col3)
cross join lateral unnest(string_to_array(t1.col4,'|')) as t5 (col4)
;
Запрос разбивается значения столбцов, но это создает намного больше строк в выводе. Любое предложение здесь будет очень полезно.