Фильтрация SQL по различным условиям на основе значений в столбце - PullRequest
1 голос
/ 16 марта 2012

У меня есть столбец классификатора, который может иметь значение X или Y. Мой запрос на выборку должен фильтроваться по дате, принимая во внимание, имеет ли столбец x или y.

date BETWEEN i.valid_fromX AND i.valid_toX 
date BETWEEN i.valid_fromY AND i.valid_toY 

По сути, мне нужен эквивалент следующего в SQL:

if classifier == X {
  check if date is between valid_fromX to valid_toX
}   else if classifier == Y {
  check if date is between valid_fromY to valid_toY
}

Ответы [ 3 ]

5 голосов
/ 16 марта 2012

Вы можете сделать это с обычной и / или логикой.В этом примере выполняется поиск января, если классификатор равен X, и февраля, если классификатор равен Y:

where  classifier = 'X' and date between '2012-01-01' and '2012-02-01'
       or
       classifier = 'Y' and date between '2012-02-01' and '2012-03-01'
2 голосов
/ 16 марта 2012
WHERE  ( classifier = 'X' AND [date] BETWEEN valid_fromX AND valid_toX )
        OR ( classifier = 'Y' AND [date] BETWEEN valid_fromY AND valid_toY )
0 голосов
/ 16 марта 2012

второстепенный вариант:

where date between 
           case classifier when 'X' then valid_fromX when 'Y' then valid_fromY end 
           and case classifier when 'X' then valid_toX when 'Y' then valid_toY end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...