【问题标题】:Filter query by one parameter or two按一个或两个参数过滤查询
【发布时间】:2013-09-10 16:56:12
【问题描述】:

我正在尝试创建一个报告,用户可以在其中选择任一参数选项,它将按所选参数过滤,或同时按两者过滤。

目前我正在使用这样的 OR 语句:

   SELECT a,b
   FROM table a
   WHERE (a = @A) OR (b=@b)

问题是当我尝试为两者输入一个值时,它只过滤一个。如何更改它以便过滤掉每一个但同时保持仅过滤一个的能力?

【问题讨论】:

  • 在哪里(a = @A 或 A 为空)和(b=@b 或 b 为空)
  • @user2460637 您应该将其添加为答案(但将其更改为WHERE (a = @A or @A IS NULL) AND (b=@b OR @b IS NULL)
  • @Sewder 你的参数值是否有行?
  • 如果参数不接受NULLs,是什么让你认为OR @A IS NULL部分会起作用?似乎您正在传递一个空白值,例如 OR @a = ''
  • @Sewder 不是真的,我似乎没有完全理解你在做什么。也许您可以为每个参数使用默认值(例如:''),并在我的数据集查询中使用它

标签: sql tsql reporting-services


【解决方案1】:
WHERE (a = @A or @A IS NULL) AND (b=@b OR @b IS NULL)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2014-02-06
    相关资源
    最近更新 更多