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