Я пытаюсь создать функцию, которая генерирует теги row и cell HTML, которые будут использоваться в другом приложении для создания базовой c HTML таблицы. Строку и ячейки необходимо сгруппировать / объединить по идентификатору региона. Это та часть, с которой я сейчас борюсь.
введите описание изображения здесь
Я попытался собрать следующую функцию вместе, но не совсем уверен, куда go, чтобы гарантировать, что вывод правильно сгруппирован по region_id.
Это не что-то, что я обычно делал бы SQL, но я работаю с некоторыми ограниченными технологиями.
create table reporting
(
id integer,
region_id integer,
category text,
item text,
status text
);
insert into reporting values
(1, 1, 'audio', 'speakers', 'delivered'),
(2, 1, 'display', 'monitors', 'pending'),
(3, 2, 'cables', 'hdmi', 'pre-order'),
(4, 3, 'storage', 'sdd', 'cancelled'),
(5, 3, 'software', 'business', 'delivered'),
(6, 3, 'other', 'support', 'delivered');
create function html_out (query text)
returns TABLE(region_id text, result text) language plpgsql as $$
declare
rec record;
header boolean := true;
begin
for rec in
execute format($q$
select row_to_json(q) json_row
from (%s) q
$q$, query)
loop
return query select region_id,
format ('<tr><td>%s</td></tr>', string_agg(value, '</td><td>'))
from json_each_text(rec.json_row);
end loop;
end $$;
select html_out('select region_id, category, item, status from reporting');