Я думаю, что вы хотите group_concat()
:
select a.identifier, a.name,
'[' || group_concat(b.identifier || ' | ' || b.name || ' | ' || b.fk_a) || ']' col
from table_a a left join table_b b
on b.fk_a = a.identifier
group by a.identifier, a.name;
См. Демоверсию . Результаты:
| identifier | name | col |
| ---------- | ---- | ------------------------- |
| 1 | ABC | [1 | abc | 1,2 | def | 1] |
| 2 | DEF | [3 | ghi | 2] |
| 3 | GHI | |
или, если вы предпочитаете, с json_group_array()
:
select a.identifier, a.name,
json_group_array(b.identifier || ' | ' || b.name || ' | ' || b.fk_a) col
from table_a a left join table_b b
on b.fk_a = a.identifier
group by a.identifier, a.name;
См. Демонстрационную версию . Результаты:
| identifier | name | col |
| ---------- | ---- | ----------------------------- |
| 1 | ABC | ["1 | abc | 1","2 | def | 1"] |
| 2 | DEF | ["3 | ghi | 2"] |
| 3 | GHI | [null] |
Вы можете использовать:
replace(json_group_array(b.identifier || ' | ' || b.name || ' | ' || b.fk_a), '"', '')
, если вам не нужны двойные кавычки.