基于列中值的不同条件进行SQL过滤

oll*_*llo 1 sql oracle

我有一个分类器列可以具有X或Y的值.我的选择查询必须按日期过滤,如果列有x或y.

date BETWEEN i.valid_fromX AND i.valid_toX 
date BETWEEN i.valid_fromY AND i.valid_toY 
Run Code Online (Sandbox Code Playgroud)

基本上我需要在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
}
Run Code Online (Sandbox Code Playgroud)

And*_*mar 5

你可以用常规和/或逻辑来做到这一点.如果分类器等于X,则此示例搜索January;如果分类器等于Y,则搜索2月:

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'
Run Code Online (Sandbox Code Playgroud)