Как в sql запросе добавить новое поле со значенем из других полей пропуская NULL
Есть такая вот таблица, нужно вывести список всеx строк, дополнительно к этому создать в результирующем наборе поле с новым названием ‘three’. Поле должно заполняться по следующему правилу:
- Если one содержит значение отличное от NULL, то это значение должно отображаться в поле ‘three’
- Если one содержит значение NULL, а поле two содержит значение отличное от NULL, в поле ‘three’ должно отображаться значение поля two
- Если оба поля one и two содержат NULL значения, в поле ‘three’ должно выводиться 'N/A'. Например при выводе этой таблице должен добавиться еще один столбец 'three' со значениями для id 1 - 2,id 2 - 3 и для id 3 - значение 4.
Ответы (1 шт):
Автор решения: Roman Konoval
→ Ссылка
Используйте функцию COALESCE для того, чтобы выбрать первое не NULL значение из нескольких:
SELECT *, COALESCE(one, two, 0) AS three
from test
Тут, если и one, two будут NULL - то в результате получим 0.
Сделать как вы хотите и возвращать числа в одном случае и строку в другом нельзя, тип колонки фиксированный.
Можно разве что изменить тип колонки three и сделать его текстовым, и тогда придется конвертировать значения из one и two и возвращать их строковое представление вот так:
SELECT *, COALESCE(one::text, two::text, 'N/A') AS three
FROM test
