SQL Выберите между двумя полями в зависимости от значения одного поля
Я использую базу данных PostgreSQL, а в таблице, представляющей некоторые измерения, у меня два столбца: измерение и интерполяция. В первом я наблюдаю (измерение), а во втором интерполированное значение зависит от близких значений. Каждая запись с исходным значением также имеет интерполированное значение. Однако существует множество записей без "оригинальных" наблюдений (NULL), поэтому значения интерполируются и сохраняются во втором столбце. Таким образом, в базе данных всего два случая:
Value Value
NULL Value
Конечно, желательно использовать значение из первого столбца, если оно доступно, поэтому мне нужно построить запрос, чтобы выбрать данные из первого столбца, а если недоступно (NULL), тогда база данных вернет значение из второго столбца для рассматриваемой записи. Я не знаю, как построить SQL-запрос.
Пожалуйста, помогите. Спасибо.
Ответы
Ответ 1
Вы можете использовать Coalesce
:
Функция Coalesce
возвращает первый из своих аргументов, который не является нулевым. Null возвращается только в том случае, если все аргументы равны нулю.
Select Coalesce( first_value, second_value )
From your_table
Это вернет first_value
, если это не NULL
, second_value
в противном случае.
Ответ 2
Питер прибил его. Но ради полноты (название вашего вопроса более общее, чем ваша конкретная проблема), здесь приведены документы для нескольких условных выражений доступен в Postgresql (и в нескольких других базах данных): CASE, COALESCE, NULLIF, GREATEST, LEAST
. Первый из них наиболее общий.