Я пытаюсь получить инструкцию SQL, где имена столбцов в SELECT являются подзапросом. Основной формат:sql select (column-name) в качестве подзапроса в postgreSQL
SELECT (<subquery for columns>) FROM Table;
Мои подзапрос возвращает 4 строки имен полей, так что мне нужно, чтобы сделать их одной строкой. Я использовал:
SELECT array_to_string(array_agg(column_names::text),',') FROM Fieldnames;
И тогда я получаю возвращенный формат col1, col2, col3, COL4 для моего 4 возвращается строки в виде строки. Если я вставляю в сыром тесте на мой запрос, он отлично работает как:
SELECT (col1, col2, col3, col4) FROM Table;
Этот вопрос arrises когда я поставил два вместе. Я получаю нечетный ответ от psql. Я получаю:
?column?
col1, col2, col3, col4
без каких-либо строк, возвращенных для:
SELECT(SELECT array_to_string(array_agg(column_names::text),',') FROM Fieldnames) FROM Table;
Концептуально, я думаю, что есть два пути я могу исправить это положение. Мне нужно вернуть мой подзапрос SELECT в формате, который можно поместить в качестве аргумента имени столбца в первый оператор SELECT, но поскольку я возвращаю несколько строк (одного значения varchar для имени столбца, которое я хочу) Я думал, что могу просто вставить их вместе, но я не могу. Я использую psql, поэтому у меня нет трюка списка «@».
Любые советы будут оценены.
Вот почему вопрос не является дубликатом и как я его решил. Стремясь упростить вопрос, который должен быть управляемым, он потерял свой сбор. Я закончил писать функцию, потому что я не мог использовать @ для передачи списка SELECT в postgreSQL. Если вы хотите выбрать только подмножество строк, вы не можете передать вложенный (SELECT) даже с AS, хотя это работает в Oracle. В результате я написал функцию, которая эффективно создала строку, а затем передала ее как SELECT. Кажется, что-то принципиально отличается от того, как парсер SQL в PostgreSQL обрабатывает аргументы для SELECT от Oracle, но каждый БД отличается.
Спасибо!
Перепишите исходный вопрос, вместо того чтобы создать новый. –
Посмотрите на динамический sql. http://www.postgresql.org/docs/current/static/sql-do.html –
Это совершенно другой вопрос из предыдущих имен столбцов SQL и сравнение их с записями строк в другой таблице в PostgreSQL, поскольку он дает другой выпуск. "? Колонок?" является ключевым здесь. Я понятия не имею, почему это генерируется. –