Reporting services 将多个值传递给子报表参数-SSRS

Reporting services 将多个值传递给子报表参数-SSRS,reporting-services,sql-server-2016,subreport,Reporting Services,Sql Server 2016,Subreport,我的报告有4个参数: 年份-接受一年的单个值-例如:2020年 载波组-允许用户选择单个载波分组 分部-允许最终用户选择一个或多个业务分部 损失原因-允许最终用户选择一个或多个损失原因 当我执行此报告时: 该报告按预期生成-我已设置SSRS报告,以便在导出时在Excel中创建一个新选项卡,将每月总计与累计总计分开 但是最终用户希望能够执行此报告多年以进行比较-因此我创建了一个父报告或主报告-然后我创建了一个tablix并添加了要调用的子报告-并基于所选的年份创建了一个行组 我的子报表参数如

我的报告有4个参数:

  • 年份-接受一年的单个值-例如:2020年
  • 载波组-允许用户选择单个载波分组
  • 分部-允许最终用户选择一个或多个业务分部
  • 损失原因-允许最终用户选择一个或多个损失原因
  • 当我执行此报告时:

    该报告按预期生成-我已设置SSRS报告,以便在导出时在Excel中创建一个新选项卡,将每月总计与累计总计分开

    但是最终用户希望能够执行此报告多年以进行比较-因此我创建了一个父报告或主报告-然后我创建了一个tablix并添加了要调用的子报告-并基于所选的年份创建了一个行组

    我的子报表参数如下:

    我最终希望完成的是在一年内通过选择的运营商组、细分市场和损失原因,并在用户可能选择的每一年运行子报告

    例如,如果用户选择2016年、2017年、2018年,则子报告将需要运行3次,以使用运营商集团、分部和损失原因的相同参数生成这些年份的总额

    我不确定发生了什么,但使用Year参数:
    =Parameters!Year.Value(0)
    -该报告看起来像是一年又一年地不断生成:

    我还尝试使用
    =JOIN(Parameters!Year.Value,“,”
    ),但这似乎也没有帮助


    有没有人有解决这类问题的经验?谢谢,

    最简单的方法是在主报表中添加一个每年返回一行的数据集

    如果您的数据库中有一个日期表或类似的表,那么您可以执行以下操作

    SELECT DISTINCT Year(myDateColumn) as [myYear]
    FROM myDatesTable
    WHERE Year(myDateColumn) IN (@Year)
    
    SELECT * FROM (
        SELECT top 20 
            ROW_NUMBER() OVER(ORDER BY name) + 2000 as [myYear]
            FROM sysobjects) o 
        WHERE myYear IN (@Year)
    
    如果您没有日期表,那么(除了建议您添加一个…),您可以使用以下内容动态创建一个日期表

    SELECT DISTINCT Year(myDateColumn) as [myYear]
    FROM myDatesTable
    WHERE Year(myDateColumn) IN (@Year)
    
    SELECT * FROM (
        SELECT top 20 
            ROW_NUMBER() OVER(ORDER BY name) + 2000 as [myYear]
            FROM sysobjects) o 
        WHERE myYear IN (@Year)
    
    (根据需要调整前20名和+2000名,以获得涵盖所有潜在数据的年份范围)

    现在,在主报表中设置tablix的dataset属性以指向此新数据集

    在子报表对象的参数中,通过从下拉列表中选择或使用
    =字段,将数据集中
    参数的值设置为
    [myYear]
    字段!myYear.Value
    作为表达式


    既然tablix已绑定到数据集,它将为从“日期”数据集返回的每条记录创建一行,每行将有一个不同的年份传递给子报表,因此每行/年调用一次子报表。

    =Parameters!年份值(0)
    表示为参数
    Year
    选择的第一个值。您需要
    =参数!Year.Value
    在分组中。我感谢您的回复,但在进行更新后-运行报告2年后,主报告中只显示所选第一年的数据-但为每月和累计总计创建14个工作表-总计28个-而不仅仅是每年所需的两个。我觉得就像我们在这里遗漏了很多信息;正如你给我们的只是真实情况的一小部分。假设你已经过滤到你想要的年份;显然你不是。所以你需要添加这些过滤器。太棒了,艾伦-谢谢你的回复。我能够通过添加该年的附加参数并将该值绑定到tablix来获得所需的输出。非常感谢!