在 s-s-rS 中,您可以将多个参数值归为一个吗?

Posted

技术标签:

【中文标题】在 s-s-rS 中,您可以将多个参数值归为一个吗?【英文标题】:In s-s-rS, can you group multiple parameter values into one? 【发布时间】:2021-12-09 07:59:33 【问题描述】:

我对 s-s-rS 比较陌生,但多年来一直在使用 SQL。我的任务是创建一份报告,根据其状态反映已发货物品。例如,我有 x 个具有不同状态的项目,包括“IN_TRANSIT”、“RECEIVING”、“SHIPPED”、“WORKING”和“CLOSED”。请求者询问我是否可以在报告下拉列表中提供以下选项:

“IN_PROCESS”状态过滤器,包括除“CLOSED”之外的所有状态。 “关闭”。

本质上,他们希望能够查看所有非关闭状态、已关闭、状态或全部。现在,我已经设置好了,因此您可以单独选择所有状态,本质上是让它们获得他们想要的数据,而不是使用“正确”的参数。

我的问题是,s-s-rS 是否提供了一种将非关闭状态“分组”到报告中的方法,以便当他们选择“IN_PROCESS”时,它将这些非关闭状态发送到我内置的 SQL 查询?使用 SQL 的问题在于,我创建的用于生成下拉选项的数据集提供了“CLOSED”和“IN_PROCESS”作为输出选项,但是当他们选择“IN_PROCESS”时(将该值发送到报告中的过滤器),因为它不是一个实际的状态,所以什么都不会回来。

如果需要更多信息或说明,请告诉我。

提前谢谢!

【问题讨论】:

如果您是 s-s-rS 新手,我真的建议您使用受支持的版本。 s-s-rS 2008 以及 SQL Server 2008 已超过 2 年不受支持。老实说,我什至不确定 VS 2008 和 BIDS 是否可以在最新版本的 Windows 上运行。 【参考方案1】:

您可以在 SQL 查询中创建一个新列,并使用 CASE 语句为适用状态提供 IN_PROCESS 或 CLOSED 的值。然后你只需要过滤条件来匹配 s-s-rS 参数到新列。

【讨论】:

【参考方案2】:

根据这种情况可能被重复使用的频率,应该有助于确定如何处理它。如果听起来它可能会成为一个常规过程......“哦,我们可以使用相同的过滤器但显示 xyz 的另一个报告”然后花时间正确设置,它将节省时间未来。

如果可能,我个人会添加一个数据库表,其中包含状态名称和状态组名称(为了简单起见,此处忽略完全规范化)。

CREATE TABLE StatusGroups(Status varchar(10), StatusGroup varchar(10))
INSERT INTO StatusGroups VALUES
    ('IN_TRANSIT', 'In Process'),('RECEIVING, 'In Process'),('SHIPPED', 'In Process'),('WORKING', 'In Process'),('CLOSED' 'Closed')

然后是一个简单的视图

CREATE MyNewView AS 
    SELECT t.*, g.StatusGroup 
      FROM MyTable t 
          JOIN StatusGroups g on t.STATUS = g.Status

现在更改您的报表数据集查询以使用此视图传递报表参数,如下所示...

SELECT * 
    FROM MyNewView 
    WHERE StatusGroup = @myReportParameter

报告参数的可用值列表的数据集可能类似于

SELECT DISTINCT StatusGroup FROM StatusGroups

这样,如果您每次都添加更多状态或状态组值,您可以在此表中添加一个条目,并且一切都会正常工作,而无需编辑您的报告。

【讨论】:

以上是关于在 s-s-rS 中,您可以将多个参数值归为一个吗?的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 单个下拉列表中的多个参数

s-s-rS 2008 - 分组集?

我们可以在 rdl(s-s-rs 报告)文件的文本上设置 onblur 事件吗?

如何强制 s-s-rS 参数的值按输入的顺序运行?

我可以发送 s-s-rS 自定义订阅电子邮件吗?

将一个表字段作为参数传递给 s-s-rS 报告中的另一个表