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

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

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

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

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

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

提前谢谢!

【问题讨论】:

  • 如果您是 SSRS 新手,我真的建议您使用受支持的版本。 SSRS 2008 以及 SQL Server 2008 已超过 2 年不受支持。老实说,我什至不确定 VS 2008 和 BIDS 是否可以在最新版本的 Windows 上运行。

标签: tsql reporting-services


【解决方案1】:

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

【讨论】:

    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 2023-01-26
      相关资源
      最近更新 更多