如何将select查询的输出作为列列表传递给postgresql中的另一个select查询?

如何将select查询的输出作为列列表传递给postgresql中的另一个select查询?,postgresql,Postgresql,我试图将select查询的输出作为列列表传递给另一个select查询 select ARRAY_TO_STRING(ARRAY(SELECT distinct COLUMN_NAME::VARCHAR(50) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='products' AND COLUMN_NAME NOT IN ('code') ), ', '); 上面的查询将给出如下所示的输出 数组到字符串 ------------------

我试图将select查询的输出作为列列表传递给另一个select查询

select ARRAY_TO_STRING(ARRAY(SELECT distinct COLUMN_NAME::VARCHAR(50)
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='products' AND 
COLUMN_NAME NOT IN ('code') ), ', ');
上面的查询将给出如下所示的输出

数组到字符串
---------------------------  
名称、价格、制造商
现在,我需要将此输出作为列列表传递给另一个select查询。所以我试着这样做

select ( select ARRAY_TO_STRING(ARRAY(SELECT distinct
COLUMN_NAME::VARCHAR(50) FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME='products' AND  COLUMN_NAME NOT IN ('code') ), ', ') ) 
from products;
但它不能正常工作。它给出如下输出:

?列?
---------------------------  
名称、价格、制造商
名称、价格、制造商
名称、价格、制造商
而不是

名称|价格|制造商
-----------------+-------+--------------  
硬盘驱动器| 240 | 5
存储器| 120 | 6
拉链驱动器| 150 | 4

那么,我如何解决这个问题呢?

您需要动态SQL来解决这个问题。这不能用普通SQL来完成,因为在实际执行查询之前需要知道查询结果的结构。为此,需要使用动态SQL。这不能用普通SQL完成,因为在实际执行查询之前需要知道查询结果的结构。