#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') ), ', ');
Приведенный выше запрос выдаст выходные данные, подобные приведенным ниже,
array_to_string
---------------------------
name, price, manufacturer
Теперь мне нужно передать этот вывод в виде списка столбцов другому запросу 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;
Но он не работает должным образом. Это дает вывод следующим образом:
?column?
---------------------------
name, price, manufacturer
name, price, manufacturer
name, price, manufacturer
Вместо,
name | price | manufacturer
----------------- ------- --------------
Hard drive | 240 | 5
Memory | 120 | 6
ZIP drive | 150 | 4
Итак, как я могу это решить?
Комментарии:
1. Для этого вам нужен динамический SQL. Это невозможно сделать с помощью обычного SQL, потому что структура результата запроса должна быть известна до фактического выполнения этого запроса.