2013-07-22 3 views
0

Я новичок в SQL, и мне было интересно, можно ли выбрать из столбцов таблицы, используя разные условия для каждого столбца в одном запросе. Например: скажем, у меня есть таблица с тремя столбцами, называемая «имя», «день рождения» и «зарплата». Я хочу выбрать из названия, когда день рождения или зарплата пустые, но я хочу только выбрать день рождения и зарплату, если они сами пустые (т. Е. Если строка имеет имя, день рождения и зарплату, только имя и день рождения будут выбраны). Есть ли способ сделать это в postgreSQL?Выберите элементы в разных условиях в одном запросе postgreSQL?

+4

Не можете ли вы проиллюстрировать ваш вопрос с данными образца? – peterm

+4

@Macklin. , , Столбцы, выбранные в SQL-запросе, являются фиксированными, поэтому вы не можете возвращать столбцы переменных. Что происходит в вашем случае, так это то, что некоторые столбцы могут быть «NULL» - и на уровне приложений может понадобиться выяснить, что с ними делать. –

+1

Ваш вопрос не имеет большого смысла. Пожалуйста, отредактируйте свой вопрос, чтобы предоставить образцы данных, образцы критериев и образец запроса, чтобы мы могли понять, что вы хотите. Прямо сейчас, вряд ли вы получите ответы. – Bohemian

ответ

0

Исправлены столбцы в SQL-запросе в PostgreSQL (в отличие от Informix, где вы можете иметь набор результатов с переменными столбцами). Есть. однако несколько способов обойти это.

  1. Используйте JSON и инструкцию CASE для монстров.

  2. Использование HSTORE и монстр сазе

  3. Использование JSON и функцию, чтобы собрать информацию, гибко.

  4. Используйте HSTORE и функцию для гибкого сбора информации.

Моя рекомендация состоит в том, что если вы действительно хотите этого, JSON с функцией будет лучший путь вперед, если вы по крайней мере 9.1 (и может устанавливать расширения) или 9.2 (даже без расширения). Это не очень легко сделать, и это требует некоторой практики, но это возможно.

Другой вариант - вернуть NULL, где значение не найдено и обрабатывать его на стороне клиента.

Смежные вопросы