报表生成器参数喜欢多个值

时间:2019-03-08 15:23:03

标签: sql-server reportbuilder3.0

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

WHERE unitcode LIKE 'A2%'

因此这将返回A200,A201,A202等。

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

WHERE unitcode LIKE @code

其中@code可以是“ A2%”或“ B2%”(可通过​​下拉菜单选择),以显示包含A2代码或B2代码的报告。

现在,我想添加第三个选择A2和B2代码的选项。这可能吗? LIKE的工作方式似乎阻止了我将多个LIKE捆绑在一个参数中,因此我尝试使用{code {1}} WHERE @code,但这会导致错误。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

我现在在内存上运行,因为我现在无法访问SSRS或报表生成器,但是,如果我没记错的话,如果您使用存储过程,它们都将一组值作为分隔字符串传递。结果是这是Pseudo-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