Динамически выбирать столбец в PostgreSQL - PullRequest
0 голосов
/ 19 марта 2019

Я хочу выбрать столбец из таблицы, имя столбца которого является результатом запроса, подобного следующему:

-- This query returns a single value
with x as (
    select a from table1 where <condition>
)

-- my_function() yields a table
select x from my_function()

Как мне это сделать?

Спасибоочень много.

1 Ответ

1 голос
/ 19 марта 2019

Вы можете написать его на SQL с помощью временной функции:

CREATE FUNCTION pg_temp.tablefunc()
   RETURNS SETOF my_function_result_type
   LANGUAGE plpgsql AS
$$DECLARE
   v_colname text;
BEGIN
   SELECT a INTO v_colname
   FROM table1
   LIMIT 1;

   RETURN QUERY EXECUTE
      format(E'SELECT %I\n'
             'FROM my_function()',
             v_colname);
END;$$;

SELECT * FROM pg_temp.tablefunc();
...