SQL — Вычисления между полями, для которых требуется условие выбора поля для вычисления

#sql #sqlite

#sql #sqlite

Вопрос:

Я работаю с SQLite. У меня есть таблица T с двумя полями D1 и D2, которые являются датами, хранящимися в виде текстовых полей. Мне нужно вычислить количество дней между заданной датой (назовем ее DF) и D1, но когда D2 не равно нулю, чтобы использовать это вместо.

Итак, допустим, мы просто вычисляли количество дней между DF и D1, которые мы будем использовать:

 SELECT CAST((julianday(DF) - julianday(D1)) AS INTEGER)
FROM T
  

Здесь, хотя мне нужно реализовать следующий псевдо SQL:

 SELECT CAST((julianday(DF) - julianday(IF D2 IS NOT NULL USE D2 ELSE USE D1)) AS INTEGER)
FROM T
  

Кто-нибудь знает, как этого добиться?

Ответ №1:

Используйте coalesce() :

 SELECT CAST((julianday(DF) - julianday(coalesce(D2, D1))) AS INTEGER)
FROM T
  

Комментарии:

1. Идеальный. Большое вам спасибо. Я скоро выберу его в качестве ответа (для этого нужно подождать еще 5 минут).