在where子句中切换case

nim*_*imi 2 sql-server-2005 sql-server-2008

我需要检查三个条件:

if @filter = 1
{
    select * from employeestable where rating is not null
}
else if @filter = 2
{
    select * from employeestable where rating is null
}
else
{
    select * from employeestable  
}
Run Code Online (Sandbox Code Playgroud)

我需要使用case语句.现在我有超过30行查询,如果我使用案例我可以减少我的代码高达70%
请现在让我知道我怎么能这样做.

Dav*_*d M 6

这个怎么样?

WHERE   (@filter = 1 AND rating IS NOT NULL)
OR      (@filter = 2 AND rating IS NULL)
OR      (@filter <> 1 AND @filter <> 2)
Run Code Online (Sandbox Code Playgroud)