当SSRS通配符搜索为空时,不要返回所有值

时间:2016-02-17 16:36:59

标签: sql-server reporting-services

当留空时,如何停止SSRS通配符搜索返回所有值?目前,如果我输入SKU的值(由下面的脚本生成)并且不输入SKU_Description的至少一个值,则报告将返回所有记录而不仅仅是SKU记录。

我将参数设置为允许空白和多个值,因为我需要能够输入SKU或SKU_Description或两者,具体取决于对每个产品的了解。

WHERE A.sku in (@SKU) 
OR B.sku_desc like '%' + @SKU_Description + '%' 

我觉得这样的事情可能有用,但它并没有:

IIf(Parameters!SKU_Description.Value="",  "WHERE A.sku in (@SKU)"
, "WHERE A.sku in (@SKU) or B.sku_desc like '%' + @SKU_Description + '%'")

我能找到的每个线程都是关于在留空时返回所有值,这与我需要做的相反。

1 个答案:

答案 0 :(得分:0)

您的查询可能需要看起来像这样。

WHERE (@SKU = '' OR A.sku in (@SKU)) 
AND (@SKU_Description = '' OR B.sku_desc like '%' + @SKU_Description + '%') 

如果@SKU或@SKU_Description可以为NULL,那么您可能需要

WHERE (ISNULL(@SKU,'') = '' OR A.sku in (@SKU)) 
AND (ISNULL(@SKU_Description,'') = '' OR B.sku_desc like '%' + @SKU_Description + '%')

修改

如果Sku和SKU_Description不必匹配相同的记录,你可以使用它。

WHERE A.sku in (@SKU) 
OR (@SKU_Description <> '' AND B.sku_desc like '%' + @SKU_Description + '%')