Как вписать в колонку конкатенированное значение двух других по выбокре?
Есть таблица, в которой колонки:
- id
- bp_id
- cef_id
Тут может быть много записей на один bp_id. То есть каждый bp_id может содержать множество строк записей. Надо сделать:
Выбрать все строки по bp_id и пронумеровать их по очереди в таблицу cef_id относительно bp_id.
То есть скажем, что есть проекты (bp_id) и список сотрудников. Надо записать в cef_id запись, которая отражала бы порядковый номер (row_number) сотрудника относительно проекта (bp_id). А если быть точнее, то значение по формату: {bp_id}_{row_number_by_bp_id}
Пока что попробовал так:
update public.cef c1
set cef_id = c1.building_project_id || '_' || bp.cnt
from (select id, ROW_NUMBER() over (order by id asc) as cnt from "public".cef) bp
where c1.id = bp.id;
Но он дописывает в конец порядковый номер записей без учета bp_id.
Ответы (1 шт):
Автор решения: mepihindeveloper
→ Ссылка
Такая вот реализация помогла
update public.cef c1
set cef_id = c1.building_project_id || '_' || bp.cnt
from (select id, ROW_NUMBER() over (PARTITION by building_project_id order by id) as cnt
from "public".cef) bp
where c1.id = bp.id;