0

我正在构建一个包含 3 个参数(供应商 ID、开始日期和结束日期)的 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 中的参数设置以允许空白/空值,但报告错误。有没有办法做到这一点?这是 SSRS 中的问题吗?

我在这样做时遇到了麻烦,任何帮助将不胜感激。

更新后包括:

    (
    customer.customer_id = @customerid
    OR
    @customerid =''
    ) AND

并更改 SSRS 中的参数这是错误消息: 在此处输入图像描述

但是,如果我在没有该参数和代码部分的情况下运行它,则报告有效。

4

2 回答 2

0

不确定没有错误消息的问题是什么,但我通常使用以下内容:

AND (
    customer.customer_id = @customerid
    OR
    @customerid IS NULL
    )

这将包括与参数匹配的所有 ID,如果参数为 NULL,则包括所有 ID。

于 2020-02-27T19:56:08.357 回答
0

另一种方法是这样做

AND (
    customer.customer_id = @customerid
    OR
    @customerid =''
    )

在您的客户参数上,将参数设置为

允许空白值 ("")

这样,如果您确实需要选择客户,您不必在使用参数之前取消勾选NULL

于 2020-02-27T20:07:43.183 回答