基于RowGroup值的SSRS Tablix单元计算

时间:2015-07-07 22:16:32

标签: ssrs-2012 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)

在此表中,'销售'和'退货产品'是Metric列,而ExecSummary'或者'质量'是ReportType条目。为了加入,我决定UNPIVOT 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(由于我的代表,我无法发布图片...)

日期是唯一的列组,分组在' MMM-yy' 父行组是ReportType 子行组是MetricType

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

我试图通过使用查找函数来计算它,如下所示:

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,但它让我回到了起初的位置,因为数据集没有值。

对此的任何帮助都会受到欢迎。我想保留行组层次结构。

1 个答案:

答案 0 :(得分:0)

听起来 LookUp 对您有用,但您只需要包含日期即可找到合适的月份。 LookUp将返回第一场比赛,这就是为什么它只在第一个月开始工作。

您可以尝试连接LookUp中的指标名称日期字段。

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

如果我误解了这个问题,请告诉我。

相关问题