我正在使用 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
=========