sql - SSRS - 将多个值传递给子报告中的过滤器
问题描述
一段时间以来,我一直被困在一项工作上,但我无法找到解决方案,并希望得到一些支持。我已经清除了一些匿名数据。
我有一份报告,其中详细说明了团队成员所采取的行动。每个动作都是原始数据集中的一行。
首先,我有两个总计,它们是对显示所有数据行的子报表的钻取。
下面是一个表格,概述了每个部门、团队和团队成员以及分别采取的行动数量。
以黄色突出显示的值表示对子报表的钻取,旨在仅返回已过滤的任何团队/个人。
我只是无法有效地将预期值传递给子报告。
目前,我能够为个人正确返回数据,但钻取不适用于团队、部门和整个整体级别。
在对子报告的钻取操作中,我有以下内容:
- pStartDate (@pStartDate)
- pEndDate (@pEndDate)
- pDispatchPerson [DispatchPerson] - 原始数据集中的字段
然后在子报告中有一个名为 pDispatchPerson 的参数设置为“隐藏”和“允许多个值”。
当我尝试在团队或部门级别进行钻取时,它似乎只是通过了它为 Dispatch Person 找到的第一个值,而我实际上希望它通过该团队或部门中包含的任何值。
以下是我尝试过的一些事情:
在主报表中为 Dispatch Person 创建一个参数,并在数据集中将默认值设置为 [DispatchPerson]。然后将操作参数设置为 pDispatchPerson [@pDispatchPerson] 并将子报告上的过滤器设置为 [DispatchPerson] IN [@pDispatchPerson]。这不返回任何数据。
在钻取按钮上的操作和子报表上的过滤器中使用 SPLIT 和 JOIN。这往往会引发错误,因为它似乎不知道要为 pDispatchPerson 分配什么值。
我已经在各种情况下尝试了上述组合,但仍然没有运气。
任何帮助将不胜感激。
约旦
解决方案
我会更改您的子报表以接受两个参数,一个用于个人,一个用于团队。
在子报表的数据集查询中,WHERE 子句将包含选择正确记录的逻辑。例如
SELECT *
FROM myTable a
WHERE (
(a.TeamID = @TeamID AND @PersonID IS NULL)
OR
(a.PersonID = @PersonID AND @TeamID IS NULL)
)
在您的主报告中,只需传入适当的参数值(团队或人员 ID)并将另一个值设置为 null。
推荐阅读
- java - 为 JMenuItem 实现 ActionListener
- java - Vaadin 14 在实现 CallbackDataProvider 时延迟加载网格错误
- android - 当我单击它时,我的退出按钮没有播放声音,除了这个所有按钮都在播放声音。任何人都可以解决这个问题吗?
- node.js - 如何将流从 h265 转换为 h264
- c - 如何处理纯 C 中的严格枚举?
- c# - 为什么我枯燥的 Newtonsoft.Json 反序列化代码不起作用?
- r - 如何根据 R 中的独特组找到均值/中值/众数?
- spring - Mybatis sql mapper xml中是否可以将CLOB数据转换为String?
- javafx - JavaFX FXMLLoader 找不到 .fxml 文件的路径
- c# - 有人可以帮我统一展示正确的场景级别吗?