Sql server 当SSRS通配符搜索为空时,不要返回所有值
当SSRS通配符搜索留空时,如何阻止其返回所有值?目前,如果我为SKU(由下面的脚本生成)输入一个值,但没有为SKU_说明输入至少一个值,则报告将返回所有记录,而不仅仅是SKU记录 我将参数设置为允许空白和多个值,因为我需要能够输入SKU或SKU_说明或两者,具体取决于对每个产品的了解Sql server 当SSRS通配符搜索为空时,不要返回所有值,sql-server,reporting-services,Sql Server,Reporting Services,当SSRS通配符搜索留空时,如何阻止其返回所有值?目前,如果我为SKU(由下面的脚本生成)输入一个值,但没有为SKU_说明输入至少一个值,则报告将返回所有记录,而不仅仅是SKU记录 我将参数设置为允许空白和多个值,因为我需要能够输入SKU或SKU_说明或两者,具体取决于对每个产品的了解 WHERE A.sku in (@SKU) OR B.sku_desc like '%' + @SKU_Description + '%' 我原以为这样可能行得通,但行不通: IIf(Parameters!
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 + '%'")
我能找到的每个线程都是关于在留空时返回所有值,这与我需要做的相反 您的查询可能需要如下所示
WHERE (@SKU = '' OR A.sku in (@SKU))
AND (@SKU_Description = '' OR B.sku_desc like '%' + @SKU_Description + '%')
如果@SKU或@SKU_Description可以为空,那么您可能需要
WHERE (ISNULL(@SKU,'') = '' OR A.sku in (@SKU))
AND (ISNULL(@SKU_Description,'') = '' OR B.sku_desc like '%' + @SKU_Description + '%')
编辑:
如果Sku和Sku描述不必为同一记录匹配,则可以使用此选项
WHERE A.sku in (@SKU)
OR (@SKU_Description <> '' AND B.sku_desc like '%' + @SKU_Description + '%')
其中A.sku(@sku)
或(@SKU_Description''和类似“%”+@SKU_Description+'%”的B.SKU_Description)
谢谢,非常接近!但是,此解决方案一次只适用于一种产品。我需要一个能够容纳多个值的解决方案,这些值可以同时被SKU或SKU描述引用。例如,如果已知,将输入SKU。但是,一个SKU也应该能够与另一个SKU未知的产品的SKU_描述同时输入。这几乎适用于我的原始查询,但当输入SKU且SKU_描述为空时,所有中的值都将返回,因为通配符搜索与所有值都匹配,而不是被忽略。@AnDrEw我明白了。。也许你需要的是编辑