【问题标题】:Stored Procedure Case Statement in Where Clause taking Parameter from Reporting Services从 Reporting Services 获取参数的 Where 子句中的存储过程案例语句
【发布时间】:2022-07-14 21:04:55
【问题描述】:

我正在使用存储过程和 SSRS。 我的数据有一列具有二进制值(1=Inside/2=Outside)。在报告中,用户可以选择内部 (1)、外部 (2) 或两者 (3) 的参数选项。在 where 子句中,我使用了以下 CASE 语句,该语句适用于选择内部或外部但同时选择两者时不返回数据。

WHERE db.Location = CASE WHEN @loc = 1 THEN 1 ELSE CASE WHEN @loc = 2 THEN 2 END END

我可以使用什么来实现与上述相同的功能,但添加同时选择两者的功能?

【问题讨论】:

  • where @loc = 3 or dbo.location = @loc。还有,你好像误会了case,比你想象的要简单!你不必做case when a then b else case when c then d end end。你可以做case when a then b when c then d end

标签: sql tsql stored-procedures reporting-services where-clause


【解决方案1】:

为什么不使用简单的OR

WHERE (db.Location = @loc OR @loc = 3)

请注意,您可能会发现您想使用这样的子句将OPTION (RECOMPILE) 添加到您的查询中,因为@loc 的值何时为3 的计划可能与1 或@ 的值不同987654327@.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多