Подтвердить что ты не робот

SQL Выберите между двумя полями в зависимости от значения одного поля

Я использую базу данных PostgreSQL, а в таблице, представляющей некоторые измерения, у меня два столбца: измерение и интерполяция. В первом я наблюдаю (измерение), а во втором интерполированное значение зависит от близких значений. Каждая запись с исходным значением также имеет интерполированное значение. Однако существует множество записей без "оригинальных" наблюдений (NULL), поэтому значения интерполируются и сохраняются во втором столбце. Таким образом, в базе данных всего два случая:

Value  Value  
NULL   Value

Конечно, желательно использовать значение из первого столбца, если оно доступно, поэтому мне нужно построить запрос, чтобы выбрать данные из первого столбца, а если недоступно (NULL), тогда база данных вернет значение из второго столбца для рассматриваемой записи. Я не знаю, как построить SQL-запрос.

Пожалуйста, помогите. Спасибо.

4b9b3361

Ответ 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. Первый из них наиболее общий.