CASE,IF之后的where子句

时间:2016-07-06 02:00:11

标签: sql reporting-services case where-clause

晚上好,我希望有人可以帮助我(我已经为此工作了4天)

我一直在使用SQL数据库和Report Builder试图找出如何在where子句之后编写此参数的代码。

我有一个名为@Active的参数,它是一个int,取值为0,1和3.在表中的列中称为IsActive,只有2个值0表示不活动,1表示活动。我要求用户选择活动,非活动或两者都用于报告目的。

在where子句之后我使用语句where

IsActive = (CASE WHEN @Active between 0 and 1 THEN @Active ELSE ??? END) 

这是我被卡住的地方。

我似乎无法在所有情况下运行此报告 我想放在Else IsActive >= 0之后但它出错了,因此报告返回活动和非活动数据。有人可以帮忙吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您不需要Case When

  • 第一个条件将处理Active(1)或Inactive(0)
  • 并且第二个条件将处理两者。

以下条款适用于您。

(isActive = @Active or @Active = 3)

答案 1 :(得分:0)

如果要将多个条件应用于CASE语句,可以按如下方式执行:

CASE 
  WHEN @Active >= 0 and @Active <= 1 THEN @Active
  WHEN @Active >= 0 THEN [put some other value here]
  ELSE [put your catchall value here]
END

希望有所帮助。