在SSRS参数中获取多个整数值

时间:2016-09-22 11:41:53

标签: reporting-services ssrs-2008

如何在SSRS参数的值字段中获取多个整数,以便在WHERE子句中使用IN语句?

忍受我。我认为这最终会成为一个简单的语法问题,但解释时间过长。

我有一份报告说我想在两类职员和专职局之间分配。确定哪个是激活发生的小时的唯一方法是,专职人员除了12和13(中午到下午2点)以外的所有时间工作。

我创建了一个名为@AgentType的参数,并在我的SQL查询中添加了一个where子句

Where

[Hour] in (@AgentType)

然后我将参数的数据类型设置为整数,并设置可用的值,如图所示。 settings

如果我尝试准确地模拟工作时间

,这完全可以作为测试

enter image description here

SSRS删除我的逗号并将整数转换为1234567 ...此外,我尝试使用expresion = 1,2,3 ......但这会在报告运行时导致错误。

所以我的问题基本上是如何在SSRS参数的值字段中获取多个整数,以便我可以在WHERE子句中使用IN语句?

2 个答案:

答案 0 :(得分:2)

此解决方案可能适合您。您可以创建两个参数AgentTypeAgentTypeHidden

对于AgentType设置两个可用值,如下所示:

enter image description here

必须隐藏

AgentTypeHidden并将其设置为允许多个值:

enter image description here

请勿使用以下表达式设置任何可用值,但默认值为:

=IIF(
   Parameters!AgentType.Value=1,
   SPLIT("1,2,3,4,5,6,7,8,9,10,11,14",","),
   SPLIT("12,13",",")
)

还为Always Refresh参数设置AgentTypeHidden

enter image description here

最后在您的查询中使用AgenTypeHidden参数。

Where [Hour] in (@AgentTypeHidden)

如果有帮助,请告诉我。

答案 1 :(得分:0)

我使用了一个更简单的解决方案, 将参数保留为文本,将其传递给它,例如:1,2,3,4,5,6 然后在查询中执行以下操作:

PT-BR

usei umasoluçãomais简单, deixe oparâmetrocomo texto,passe para ele ex:1,2,3,4,5,6 查询查询结果:

Where [Hour] in (SELECT value FROM STRING_SPLIT(@AgentType, ','))