【问题标题】:Static Values from Multiple Queries/Datasets in Single SSRS Tablix单个 SSRS Tablix 中多个查询/数据集的静态值
【发布时间】: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


【解决方案1】:

我使用具有多个数据集的表达式来解决这个问题。一旦我找到答案,答案似乎太容易了。基本上只是使用我的第一个数据集创建了一个表 tablix。在下面的组内创建了更多详细信息行。然后我转到每个表达式的表达式生成器,找到另一个数据集并双击它以获取从另一个数据集中提取的表达式。例如,bac_labor 数据集值将如下所示。 =Sum(Fields!BAC_LABOR.Value, "BAC_Labor")

然后对于计算可以使用相同的东西,如 =Sum(Fields!BAC_LABOR.Value, "BAC_Labor") + Sum(Fields!BAC_LABOR_OVERHEAD.Value, "BAC_Labor") 或者可以做这样的事情 =ReportItems!Textbox2.Value - ReportItems!Textbox1.Value 引用单元格值。与将 500 个字符的选择语句加在一起进行计算相比,这节省了大量时间、开发工作并减少了计算代码。也不需要使用存储过程和联合或将每个选择语句与此方法一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多