在PostgreSQL中动态选择列

时间:2019-03-19 14:21:39

标签: postgresql dynamic

我想从表中选择一列,列名是查询的结果,如下所示:

-- 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 个答案:

答案 0 :(得分:1)

您可以使用临时功能在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();