Как переделать запрос (представление):
SELECT roles.position AS id, divisions.name AS division, roles.name AS role, ranks.name AS rank, staff.name, staff.identity, parameters.id AS param_id, parameters.name AS parameter, "values".id AS val_id, "values".value
FROM roles
JOIN divisions ON roles.division = divisions.id
JOIN staff ON roles.id = staff.role
JOIN ranks ON staff.rank = ranks.id
JOIN "values" ON roles.id = "values".role
JOIN parameters ON "values".parameter = parameters.id
Что бы вместо
id::bigint;division::text;role::text;rank::text;name::text;identity::text;param_id::bigint;parameter::text;val_id::bigint;value::text
---------------------------------------------------------------------
1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";1;"Дата рождения";1;"13.09.1986"
1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";2;"Пропуск";2;"123-456789"
...
Получить
id::bigint;division::text;role::text;rank::text;name::text;identity::text;parameter_1::text;value_1::text;parameter_2::text;value_2::text
---------------------------------------------------------------------
1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";"Дата рождения";"13.09.1986";"Пропуск";"123-456789"
Сделал сейчас через CASE, но не понимаю, как избежать "объявления количества" (... AS value_1, ... AS value_2 и т.д.) полей. Таблица parameters содержит сейчас 18 строк (наименований параметров), но наименования могут быть как добавлены, так и удалены, в связи с этим моё решение бесполезно, а как сделать, чтобы количество полей создавалось динамически в зависимости от количества наименований параметров в таблице parameters не хватает знаний. Прошу помощи знающих.