На основании this У меня есть таблица, которая имеет значения, которые будут именами столбцов результата запроса PostgreSQL.значения столбца как имена столбцов в запросе thepsql
id col1 col2
----------------------
0 name ax
0 name2 bx
0 name3 cx
1 name dx
1 name2 ex
1 name2 fx
... ... ...
Теперь я хочу, чтобы результат запроса, чтобы выглядеть следующим образом
id name name2 name3 ...
0 ax bx cx ...
1 dx ex fx ...
Число полей на col1 изменяется каждый раз, когда добавляется новое поле. Для этого мне нужно сгенерировать функцию, которая будет динамически возвращать результаты таким образом.
Это было что:
SELECT
id,
/* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
/* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
FROM mytable
GROUP BY id
, но мне нужно, чтобы он динамический, потому что col1 имена могут быть большой список, так что я не могу обновлять запрос, каждый раз, когда новое имя добавляется в col1.
Я проверил, как это сделать, используя сводную таблицу, я попытался следовать этому example, но также там хорошо известны поля, пожалуйста, кто-нибудь может мне помочь?
Для вызова запроса с динамическим количеством столбцы, вы должны использовать [динамическую команду] (https://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXE CUTING-DYN) и [refcursor] (https://www.postgresql.org/docs/current/static/plpgsql-cursors.html#AEN66382) или [курсор sql] (https://www.postgresql.org/docs /current/static/sql-declare.html), чтобы получить результат. – Abelisto
Вы указали ODBC как один из ваших тегов ... вы приносите это в Excel или Access? Если это так, вы можете динамически связывать данные через ODBC и позволить этим инструментам визуализировать его так, как вы просите, - в сводной таблице или запросе кросс-табуляции. – Hambone