如何为多个代理添加参数以从 SSRS 统计报告中排除

How to add parameters for multiple agents to exclude from the SSRS Stats Report

场景: 我有一份报告,可以提取我已设置为参数的特定日期范围(通常是同一天,昨天)的代理统计数据。我在 Visual Studio 报表生成器中构建了报表,并且报表效果很好。

挑战: 一些代理人当天不接电话而是处理电子邮件。因此,尽管他们已登录,但无法将他们添加到呼叫队列统计信息中。

需要: 我需要从下拉列表 (Ctrl+select) 添加可以 select 代理的参数,并让报告 运行 其中 employeeID 不在 selected 中。然后我需要在报告生成器中添加这些参数以显示为下拉列表,以便用户可以 ctrl+select 要排除的代理。

问题: 我知道如何创建 1 个参数来排除 1 个代理。如何创建参数以排除超过 1 个代理?有时,它可以是 0 个代理,有时是 10 个。

我正在使用 MS SQL Server 2014。

您需要向数据集查询添加一个参数,例如 假设一些非常简单的表用于说明,AgentID 是代理的唯一键。

SELECT {your list of columns} FROM AgentCalls 
WHERE 
(AgentID NOT IN (@myParamName) OR ISNULL(AgentID,'')='')

如果未选择任何代理,这将显示所有代理;如果选择任何代理,它将排除代理。

然后您需要为您的参数填充可用项目列表,在本例中它将是代理列表。 因此,创建另一个名为 dsAgents 的数据集 使用类似

的查询
SELECT AgentID, AgentName FROM Agents ORDER BY AgentName

在参数设置中,将参数设置为多值并允许为空&null,在可用值中,选择dsAgents作为query,使用AgentID字段作为Value,AgentName字段作为Label。

SSRS 会自动将选择的参数值列表转换为逗号分隔列表并在 IN 子句中使用,您无需执行任何其他操作。

P.S。这是凌晨 1 点的记忆,所以它可能不准确,但应该足够好。

注意:不需要按住控件参数列表会显示复选框。

试试下面的代码:

SELECT {your list of columns} FROM AgentCalls 
WHERE 
(AgentID NOT IN (@myParamName) OR @myParamName is ISNULL)