编写查询以处理三个不同的标签

时间:2019-03-21 17:09:58

标签: sql reporting-services ssrs-2012

我有3种不同的下拉选项。如果我一次选择一个选项,它会起作用,但是如果选择多个,则会引发错误。这三个标签指的是三个不同的版本。一切正常,但是当我在下拉列表中选择多个选项时,它崩溃。需要帮助,了解原因

这三个参数是 全选: 报告1 报告2 报告3

这是我的查询:

SELECT
  ServerInfo.Version,
  ServerInfo.Type,
  ProjInfo.ProjName,
  ServerInfo.ServName
FROM
  ProjInfo, ServerInfo
WHERE ServerInfo.Version LIKE('%'+@ServerReport+'%')

','附近的语法不正确。

对数据集“报表”的查询执行失败。 (rsErrorExecutingCommand)

在报表处理期间发生错误。 (rsProcessingAborted)

1 个答案:

答案 0 :(得分:0)

这里的问题是查询期望一个字符串值,但是当选择了多个倍数时,报表将向它发送一个值数组。

  1. 在数据集属性的参数标签中,像这样更新表达式:

    ="," & Join(Parameters!ServerReport.Value, ",") & ","

    这会将所选值组合成一个逗号分隔的字符串。

  2. 像这样更新您的WHERE子句:

    @ServerReport like '%,' + ServerInfo.Version + ',%'

这允许它扫描参数字符串中的版本字符串。连接参数和like语句外部的逗号可防止它无意中匹配部分字符串。

说明: 所有这些都假设您实际上首先需要like语句。通常你会说:

ServerInfo.Version IN (@ServerReport)

这将接受多个值,而没有任何其他更改。但是字符串必须完全匹配。