Как использовать sql отличается, где заявление на основе значения столбца? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть таблица с именем offers. В ней есть следующие столбцы

  1. is_special со значением true или false
  2. normal_expiry_date со значением даты
  3. special_expiry_date со значением даты

Теперь, если в строке is_special = false, я хочу использовать where normal_expiry_date > current_date, если is_special = true, тогда where special_expiry_date > current_date

Большое спасибо даже если вы пытались помочь

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Один вариант будет

where current_date < case when is_special = false then normal_expiry_date
                          when is_special = true  then special_expiry_date
                     end
0 голосов
/ 06 апреля 2020

Вы можете использовать логические логики c:

where 
    (is_special = 'false' and normal_expiry_date > current_date)
    or (is_special = 'true' and special_expiry_date  > current_date)

Примечание: неясно, каков тип данных is_specia, поэтому вам может потребоваться адаптировать условие равенства. Если это Postgres логическое значение, например:

where 
    (not is_special and normal_expiry_date > current_date)
    or (is_special and special_expiry_date  > current_date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...