报表生成器参数LIKE多个值

问题描述 投票:0回答:2

我的数据集查询使用LIKE语句选择值:

WHERE unitcode LIKE 'A2%'

所以这会返回A200,A201,A202等。

我的报告将其替换为参数:

WHERE unitcode LIKE @code

其中@code可以是'A2%'或'B2%',可通过下拉列表选择,以显示包含A2代码或B2代码的报告。

现在我想添加第三个选项,同时选择A2和B2代码。这可能吗? LIKE工作的方式似乎阻止我在单个参数中绑定多个LIKE,并且我尝试使用@code为WHERE @code来执行unitcode LIKE 'A2%' OR unitcode LIKE 'B2%',但这会导致错误。

sql-server reportbuilder3.0
2个回答
2
投票

您可以在此处使用SQL Server的增强型LIKE

SELECT *
FROM yourTable
WHERE unitcode LIKE '[AB]2%';

这可能会解决问题的查询方面,但您仍然需要一种方法来收集参数,以便可以编写上述参数。


0
投票

我正在运行内存,因为我现在无法访问SSRS或报表生成器,但是,如果我没记错,如果使用存储过程,则将一组值作为分隔字符串传递。这是伪SQL的结果,但是你可以使用字符串拆分器做这样的事情(假设没有标记版本的SQL Server 2016+):

CREATE PROC YourProc @code varchar(100) AS
BEGIN
    SELECT {Your SELECT statement}
    FROM {Your FROM and JOINs}
    WHERE EXISTS (SELECT 1
                  FROM STRING_SPLIT(@code,',') SS
                  WHERE {YT}.unitcode LIKE SS.[value]) --assumes that the report passed values with a % at the end
      AND {Rest of WHERE};                             --Otherwise use LIKE SS.[value] + '%'
END
© www.soinside.com 2019 - 2024. All rights reserved.