如果@parameter = 0,则在WHERE语句中使用CASE WHEN返回所有记录

时间:2014-05-14 21:29:37

标签: sql visual-studio-2008 parameters where case-when

我正在使用 Visual Studio 2008 并且在报告中尝试创建一个具有WHERE语句的查询,该语句将返回 all < / em>记录,如果是@parameter = 0,否则我希望查询只返回具有@paramete的记录。

以下是我设想的陈述,但似乎无法纠正:

WHERE (ADVISOR.staffPersonID = CASE WHEN @advisor = 0 THEN **'Do NOT
filter by staffpersonID'** ELSE @advisor END)

我尝试了以下的代码:

CASE WHEN @advisor = 0 THEN ADVISOR.staffPersonID ELSE @advisor END
如果ADVISOR.staffPersonID的值不是@parameter,则

0是我要过滤的字段。根据我在网上研究的内容,使用字段本身作为语句中的THEN应该有效。它确实如此,除非表(advisor)根本没有匹配的记录。

2 个答案:

答案 0 :(得分:0)

WHERE 
 (@advisor <> 0 AND ADVISOR.staffPersonID = @advisor)
OR 
 (@advisor = 0 )

答案 1 :(得分:0)

试试这个:

WHERE ADVISOR.staffPersonID = @advisor OR @advisor = 0