关键值对的SSRS动态报告

时间:2018-02-27 17:59:41

标签: sql-server reporting-services ssrs-2012 dynamic-pivot

我需要使用SSRS创建许多不同的报告,我一直在努力寻找最好的方法让我根据需要轻松创建它们,并让用户浏览它们并根据需要使用它们。

为了让您了解我正在处理的两组数据:

  • 来自客户的EDI文件
  • 硬件配置的原始数据输出

现在EDI数据相当一致,因此这些列是静态的。 硬件数据通常是不同配置的大量列表。我以不同的平面文件格式接收它们并使用SSIS或其他工具将数据导入Key Value Pairs。现在在报告中,我使用矩阵来保持EDI列静态,它与序列号上的硬件匹配,以及硬件数据转向。

所以报告没有中断,所以我没有给用户太多的信息,它在另一个表上匹配,我指定了哪些键是列。

以下是我的一个报告的一个小例子:

Example

绿色列是EDI,而橙色是硬件。

我的问题是,我有更好的方法来做这件事吗?有些报告可能变得复杂,就像某些硬件需要总量(计算硬盘空间,ram总数等)这很难动态完成。

我尝试使用这些参数以这种方式创建报告:

Example 2

这样我就可以为每个项目创建Key列,用户可以选择他们想要运行的报告。默认值为All Data。

我有更好的方法来创建这些报告吗? SSRS在动态支点方面似乎并不能很好地发挥作用。

是否有更好的工具可以动态处理这些报告,或让用户选择他们想要在报告中看到的内容?

2 个答案:

答案 0 :(得分:1)

您无法在SSRS中动态创建列,但可以控制列的可见性。

1)在表格中创建一个列表,其中包含您想要切换的所有列的名称,并包含一个标题为“全部”的列。

2)创建一个基于此表的参数,并确保打开多选。

3)右键单击要切换的每一列,选择可见性,然后创建一个条件,检查用户是选择了All还是从参数列表中选择了列。

4)培训用户通过从下拉菜单中选择和取消选择,他们可以控制什么。

答案 1 :(得分:1)

我无法直观显示您的数据,但如果我理解正确,您可以使用下拉列表显示您在列组中使用的列中的所有唯一值。将其设置为多值,然后只需将WHERE子句读为

SELECT * FROM myTable WHERE myColumnGroupField IN (@myColumnChoiceParameter)

这样用户可以选择他们想要的任何列。

你可以通过添加另一个具有一些预设列组的参数来扩展它(我想如果我理解的话,你可能已经有其中一个),这将设置主@myColumnChoiceParameter参数的默认值。 / p>

如果您想要更灵活的东西,那么您可能希望查看Power BI,但取决于您打算如何部署这可能不是一个简单的选项。