在 SSRS 中,如何使用一个数据集返回的值来构建对不同数据集的查询?

在 SSRS 中,如何使用一个数据集返回的值来构建对不同数据集的查询?

我正在使用 SQL Server Report Builder 3.0 创建报告。

我有两个表,我想在一个表中查找一个值,然后使用该值从第二个表中选择一个值。示例如下:

表:员工

| 员工编号 | 姓氏 |

| -------- | ------- |

| 1 | 史密斯 |

| 2 | 琼斯|

表:课程

| 教师 | 课程 |

| -------- | ------- |

| 1 | 法语 |

| 2 | 德语 |

数据集 1:SELECT staff_id FROM staff WHERE surname='Smith'

数据集 2:从课程中选择课程,其中教师 ={来自数据集 1 的 staff_id}

但我不知道如何将 Dataset1 中的值传递给 Dataset2 中的查询

我尝试使用查找其他数据集将值放入名为 teacher_id 的变量中,然后对 Dataset2 的查询变为

从课程中选择课程,其中教师=@teacher_id

但我得到了错误

计算字段“teacher_id”使用的表达式包括聚合、RowNumber、RunningValue、Previous 或查找函数。聚合、RowNumber、RunningValue、Previous 和查找函数不能用于计算字段表达式。

我能做到我需要做的事吗?

非常感谢

编辑:抱歉 - 我似乎无法正确格式化表格,但它们只有 2 列乘以 2 行,所以应该很容易理解

答案1

您不能简单地在数据库中执行这两件事,然后在单个视图中返回结果数据集吗?

答案2

我已经搞清楚了。首先,我在 SSRS 报告服务器的 SSMS 控制台中打开了远程错误,通过“属性”->“高级”->“安全”->“EnableRemoteErrors”

这使我能够看到提到“必须声明标量变量......”的错误消息详细信息。

因此,我无需尝试引用另一个数据集中的变量,而是能够在实际的第二个数据集 SQL 查询中声明该变量。然后,我可以通过将其设置在其余查询之前的嵌套 Select 中来提取所需的值。

我的例子现在有点偏离,但如果我在报告参数中设置了@staff_id,那么第二个查询将会是这样的

=========

将@CourseTeacher声明为INT

设置@CourseTeacher = (从课程中选择老师,其中teacher_id = @staff_id)

从课程中选择课程,其中老师 = @CourseTeacher

=========

相关内容