【发布时间】:2015-07-08 06:35:55
【问题描述】:
我浏览了几篇关于 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 列,而“ExecSummary”或“Quality”是 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 除以销售额。
我尝试使用查找函数来计算,如下所示:
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,但它让我回到了最初的位置,因为数据集没有价值。
对此的任何帮助都会受到欢迎。我想保留行组层次结构。
【问题讨论】:
标签: ssrs-2012 ssrs-tablix