【发布时间】:2019-05-24 03:06:04
【问题描述】:
好的,所以我有这份报告,我必须以非常具体的格式用 SSRS 编写。它看起来像下面底部的屏幕截图。忽略箭头和颜色。它是从 Oracle 数据库中提取的。此表/矩阵中的每个数值单元格都有不同的 sql 查询将其拉入,因为它们来自不同的表等。
表中的上半部分数字均来自查询。表的下半部分是上半部分数字的所有计算。我已经有了上半部分的查询,并试图弄清楚如何使用这些查询在 SSRS 中仅使用这些查询来制作此表,然后在下半部分为报告创建计算。我不能使用表或矩阵,因为每个查询都是不同的数据集,每个 tablix 只能有一个数据集。
我在想也许做文本框和手动绘制网格,这将是一个巨大的痛苦。我收到关于没有聚合和超出范围之类的错误,并且还没有弄清楚原因,因为这不是我理想的解决方案。
我目前的解决方案最终会让我到达那里,合并每个查询,然后为网格中的行和列创建具有静态值的列,并将其转换为矩阵。问题在于,随着我在表格计算中进一步创建每一个,它的复杂性继续增加,代码变得越来越大,并且需要很长时间才能创建,我必须做 6 个本质上与格式相似的报告这个。可能会是一千行 sql,由于 ssrs 字符限制,我不得不制作一个存储过程。;
所以我的问题以更简单的方式是,我怎样才能获取多个返回静态值的 sql 查询,并使它们成为不重复的 tablix 中的单个值,然后在该 tablix 中创建更多空白行其他单元格值的计算,即 Textbox1 - textbox2, textbox3/textbox4 ?
【问题讨论】:
-
您是否尝试过 SubReports:docs.microsoft.com/en-us/sql/reporting-services/report-design/… 我认为 subreport 可以帮助您解决复杂的问题。看看吧
-
老实说,单个存储过程通常是组合这么多表的最佳方式。每条数据真的来自不同的表吗?我会想象使用 JOIN 会比 UNION 更好,但是如果没有看到任何模式就很难说。为了这个确切的目的,我有大约 700-800 行。在您需要进行更改的情况下,使用 proc 会更容易。您只需对一个查询进行故障排除,而不是 25 个较小的查询,但也许这只是我的偏好。
-
子报告可以工作,但每个单元格都有一个子报告?我会通过。是的,我正在做的带有工会的存储过程也可以工作,但效率仍然很低。并非全部来自不同的表,而是必须对每列的一些相同表中的多行求和,但每个单元格都有不同的 where 子句,因此 group 和 sum 不起作用。更多地寻找完成这项工作的最快最简单的方法。应该能够制作一个网格并在其中弹出值,然后计算其他单元格的值。
-
我的意思是,如果您选择保留单独的查询,tablix 将起作用。它只需要大量使用
Lookup函数来查找来自不同数据集的值。也许可以将您的数据包含在 3-5 个过程中以简化查找,但您可能注定要拥有复杂的报表设计。我明白这感受。我有一份包含 4 个数据集和 6 个表格的报告,其中包含数百个文本框。这很复杂,但可以完成工作并且看起来不错。 -
没有想到查找功能。看起来也可以,但仍然像你说的那样乏味。
标签: sql reporting-services ssrs-tablix