本文介绍了基于行组值的SSRS Tablix单元计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我浏览了几篇关于SSRS Tablix表达式的帖子,但找不到我的特定问题的答案。

我正在创建一个仪表板,其中包含各种经理的汇总数据。他们将每月汇总数据输入到结构如下的单个表中:

Create TABLE OperationMetrics
AS
Date date
Plant char(10)
Sales float
ReturnedProduct float

数据可能会使用一些分组,因此我创建了一个表来引用这些指标所属的报告组,如下所示:

Create Table OperationsReport
as
ReportType varchar(50)
MetricType varchar(50)
在此表中,‘Sales’和‘ReturnedProduct’是Metric列,而‘Exec摘要’或‘Quality’是ReportType条目。为了进行连接,我决定取消对OperationMetrics表的操作...

Select Date, Plant, Metric, MetricType 
From (Select Date, Plant, Sales, ReturnedProduct From OperationMetrics)
UNPVIOT (Metric for MetricType in (Sales, ReturnedProduct) UnPvt

并将其连接到OperationsReport表,因此我对指标进行了分组。

Select Date, Plant, Metric, Rpt.MetricReport, MetricType
FROM OpMetrics_Unpivoted OpEx 
INNER JOIN OperationsReport Rpt on OpEx.MetricType = Rpt.MetricType 

(我知道这其中的一些因素并不理想,但有时我们无法掌控自己的命运。)

这不包括所有的表,但您得到了要点。因此,他们有一个表单,可以在OperationMetrics表中填写。我选择SSRS来显示输出。

我创建了一个具有以下配置的Tablix(由于我的代表原因,我无法发布图片...)

DATE是唯一的列组,按‘MMM-YY’分组上级行组为报表类型子行组为指标类型

现在,我的问题是有些指标是对其他指标的计算。例如,经理没有输入‘退货产品(销售额的百分比)’,因为假设我们可以简单地计算出来。它将是退货产品除以销售额。

我尝试使用查找函数计算此值,如下所示:

Switch(Fields!FriendlyName.Value="Sales",SUM(Fields!Metric.Value),
Fields!FriendlyName.Value="ReturnedProduct",SUM(Fields!Metric.Value),
Fields!FriendlyName.Value="ReturnedProductPercent",Lookup("ReturnedProduct",
Fields!FriendlyName.Value,Fields!Metric.Value,"MetricDataSet")/
Lookup("Sales",Fields!FriendlyName.Value,Fields!Metric.Value,
"MetricDataSet"))

这个很管用!第一个月..。但由于Lookup会查找第一个匹配项,因此它只会在随后的几个月中发布相同的值。

我尝试使用this,但它使我返回到开始时的位置,因为数据集没有该值。

在这方面的任何帮助都会得到很好的欢迎。我希望保留行组层次结构。

推荐答案

听起来查找对您有效,但您只需包括日期即可找到正确的月份。查找将返回第一个匹配项,这就是它只在第一个月起作用的原因。

您可以尝试在查找中连接指标名称日期字段。

Lookup("Sales" & CSTR(Fields!DATE.Value), Fields!FriendlyName.Value & CSTR(Fields!DATE.Value), Fields!Metric.Value, "MetricDataSet")

如果我误解了问题,请让我知道。

这篇关于基于行组值的SSRS Tablix单元计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 18:38