我正在构建一个包含3个参数(supplierid、startdate和enddate(的SSRS报告,但我正在尝试实现一个名为customerid的可选参数(允许空白值的参数(。这是我的代码:
WHERE (invoice_hdr.company_no = 1) AND
(supplier.supplier_id = @supplierid) AND
(@customerid =
CASE @customerid
WHEN customer.customer_id THEN customer.customer_id
ELSE 0
END) AND
(invoice_hdr.invoice_date >= DATEADD(DAY,-365,GETDATE()) AND
--(invoice_hdr.invoice_date >= @startdate) AND
--(invoice_hdr.invoice_date <= @enddate) AND
(invoice_line.tax_item = 'N') AND
我想说的是:如果一个值被放入customerid参数中,那么用其他过滤器返回该值,但如果该参数中没有值,那么绕过该过滤器,继续运行查询,就像它不存在一样。我已经更改了SSRS中的参数设置,允许使用空白/null值,但报告出错。有办法这样做吗?这是SSRS中的问题吗?
我在做这件事时遇到了麻烦,如果有任何帮助,我们将不胜感激。
包含后更新:
(
customer.customer_id = @customerid
OR
@customerid =''
) AND
并且更改SSRS中的参数,这是错误消息:在此处输入图像描述
但如果我在没有该参数和代码部分的情况下运行它,报告就会工作。
如果没有错误消息,我不确定问题是什么,但我通常使用以下内容:
AND (
customer.customer_id = @customerid
OR
@customerid IS NULL
)
这将包括与参数匹配的所有ID,或者如果参数为NULL,则包括所有ID。
另一种选择是进行
AND (
customer.customer_id = @customerid
OR
@customerid =''
)
在您的客户参数上,将参数设置为
允许空白值("(
这样,如果您确实需要选择客户,则在使用参数之前不必取消勾选NULL