Sql server CASE和IN where子句

时间:2013-10-16 13:08:51

标签: sql-server case where-clause where-in

有人可以帮我跟踪sql查询。

当您想要按阶段I过滤时,它应返回阶段I或阶段I / II但不返回阶段II或阶段III的结果。

类似于第二阶段,它应该返回阶段I / II,阶段II或阶段II / III

的结果
select Phase from Phases where Phase in (case 

when @phase='Phase I' then '''Phase I'',''Phase I/II'''
when @phase='Phase II' then '''Phase I/II'',''Phase II'',''Phase II/III'''
end)

我不想使用动态查询来解决问题。

1 个答案:

答案 0 :(得分:3)

布尔逻辑可以解决这个问题:

select Phase 
  from Phases 
 where (@phase = 'Phase I'  and Phase in ('Phase I', 'Phase I/II'))
    or (@phase = 'Phase II' and Phase in ('Phase I/II', 'Phase II', 'Phase II/III'))