У меня есть данные из таблиц postgres, которые выглядят так:
Server | Database | Contact
server1 | db1 | contact 1
server1 | db2 | contact 2
server1 | db3 | contact 3
server2 | db1 | contact 4
server2 | db2 | contact 3
Но мне нужно преобразовать их, чтобы перейти к представлению внешнего интерфейса в следующем формате:
Server | Database | Contact
server1 | {db1, db2, db3} | {contact1, contact2, contact3}
server2 | {db1, db2} | {contact3, contact4}
Для каждого уникального значения в столбце Server
я хочу создать столбец массива из каждого другого столбца в моем запросе SQL.Пока что у меня есть что-то вроде этого, но похоже, что он не создает массив из столбца Server
(столбец Контакт исключен для ясности):
SELECT "table1"."Server"
COALESCE( NULLIF( array
(
select DISTINCT x
FROM unnest( array_agg(DISTINCT "table1"."Server") ) x
WHERE x IS NOT NULL ), '{}' ), '{"No Data"}' ) AS "serverList" ,
COALESCE( NULLIF( array
(
SELECT x
FROM unnest( array_agg(DISTINCT "table1"."Database") ) x
WHERE x IS NOT NULL ), '{}' ), '{"No Data"}' ) AS "databseList"
FROM "table1"
GROUP BY
"table1"."Server"
Как правильно создать столбцы массива из уникальныхзаписи в столбце Сервер?