0

我正在处理 Microsoft SQL Server Report Builder 报告,但遇到了一个似乎无法克服的问题。

我的报告是大学课程的列表。我需要能够显示所有课程或仅显示通识教育课程。

有一个课程属性可以与课程相关联。所有普通 ed 课程都有一个 course 属性,该属性由 # 后跟 3 个字母组成。

通过创建一个将 #% 或 % 传递到我的查询的 WHERE 子句的参数,解决方案似乎非常简单,如下所示:

  • WHERE factClassAttributes.CourseAttribute LIKE '#%'(生成的课程)
  • WHERE factClassAttributes.CourseAttribute LIKE '%'(所有课程)

我没有指望的是某些课程没有课程属性,并且使用 % 不包括课程属性值为空的记录。

然后我想我会尝试设置一个参数,其中包含 WHERE 子句作为一个值,而 null 作为另一个值。这会生成一般的“rsErrorExecutingCommand”错误消息。

除了创建没有 WHERE 子句的相同报告之外,是否有人对如何完成此操作有任何建议?

谢谢

4

1 回答 1

1

Either use an optional parameter:

WHERE ((@param1 IS NULL) OR (factClassAttributes.CourseAttribute LIKE @param1 +'%'))

Or dynamically replace the nulls:

WHERE ISNULL(factClassAttributes.CourseAttribute,'%') LIKE '#%'
于 2016-03-01T17:05:33.410 回答