当留空时,如何停止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 + '%'")
我能找到的每个线程都是关于在留空时返回所有值,这与我需要做的相反。
答案 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 + '%')