SSRS搜索多个参数允许一些空白

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSRS搜索多个参数允许一些空白相关的知识,希望对你有一定的参考价值。

我希望能够使用4个参数中的任何一个来搜索订单的位置。在查找一组完整参数时,我的工作原理是什么,但当它们中的任何一个留空时,不会返回任何结果。 (所有4个参数都声明为varchar(255))

select
  ContactName,
  ContactEmail,
  ContactPhone,
  OriginCity,
  OriginState,
  OriginZip,
  DestCity,
  DestState,
  DestZip
from Orders
where 
  (OriginCity in (@Origin)
  or OriginState in (@OriginS))
  and 
  (DestCity in (@Dest)
  or DestState in (@DestS))
order by 
  OriginCity,
  OriginState,
  DestCity,
  DestState
答案

您需要在WHERE子句中添加一个额外的OR条件来处理NULL参数。所以你的WHERE子句应该是这样的:

WHERE 
 ( 
  (OriginCity in (@Origin) OR @Origin IS NULL )
     OR 
  (OriginState in (@OriginS) OR @OriginS IS NULL )
 )
 AND 
 (
  (DestCity in (@Dest) OR @Dest IS NULL )
    OR 
  (DestState in (@DestS) OR @DestS IS NULL )
 )

要避免表扫描,请在查询的最后添加OPTION(RECOMPILE)。

另一答案

您可以尝试使用动态SQL来处理此问题。请参阅链接 - http://www.sommarskog.se/dynamic_sql.html并获得适当的性能指标。

以上是关于SSRS搜索多个参数允许一些空白的主要内容,如果未能解决你的问题,请参考以下文章

隐藏SSRS矩阵中的多个列

SSRS报告导出为PDF并附加其他文档

URL 片段中的多个参数

可选的SSRS参数

片段中的Android webView显示空白页面

SSRS:来自多个数据库的联合数据