基于 RowGroup 值的 SSRS Tablix 单元格计算
SSRS Tablix Cell Calculation based on RowGroup Value
我已经查看了几个关于 SSRS tablix 表达式的 post,但找不到我的特定问题的答案。
我正在创建一个仪表板,其中包含各个经理的摘要数据。他们将月度汇总数据输入到一个结构如下的 table 中:
Create TABLE OperationMetrics
AS
Date date
Plant char(10)
Sales float
ReturnedProduct float
数据可以使用一些分组,所以我创建了一个 table 来引用这些指标进入哪个报告组,如下所示:
Create Table OperationsReport
as
ReportType varchar(50)
MetricType varchar(50)
在这个 table 中,'Sales' 和 'ReturnedProduct' 是 Metric 列,而 'ExecSummary' 或 'Quality' 是 ReportType 条目。为了加入,我决定取消操作 OperationMetrics table...
Select Date, Plant, Metric, MetricType
From (Select Date, Plant, Sales, ReturnedProduct From OperationMetrics)
UNPVIOT (Metric for MetricType in (Sales, ReturnedProduct) UnPvt
并将其加入 OperationsReport table,这样我就对指标进行了分组。
Select Date, Plant, Metric, Rpt.MetricReport, MetricType
FROM OpMetrics_Unpivoted OpEx
INNER JOIN OperationsReport Rpt on OpEx.MetricType = Rpt.MetricType
(我明白其中的元素并不理想,但有时我们无法控制自己的命运。)
这不包括整个 table,但您明白了要点。因此,他们有一个表格,他们填写了 OperationMetrics table。我选择了 SSRS 来显示输出。
我使用以下配置创建了一个 tablix(由于我的代表,我无法 post 图片...)
日期是唯一的列组,在 'MMM-yy' 上分组
父行组是 ReportType
子行组是 MetricType
现在,我的问题是一些指标是其他指标的计算结果。例如,经理没有输入 'Returned Product (% of Sales)',因为假设我们可以简单地计算它。它将是 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 会查找第一个匹配项,因此它只是 post 在之后的剩余月份中具有相同的值。
我尝试使用 this 但它让我回到了开始时的状态,因为数据集没有值。
任何对此的帮助都会受到欢迎。我想保留行组层次结构。
听起来 LookUp 对您有用,但您只需要包含日期即可找到正确的月份。 LookUp 将 return 第一场比赛,这就是为什么它只在第一个月工作。
您可以尝试在 LookUp 中连接 Metric Name 和 Date 字段。
Lookup("Sales" & CSTR(Fields!DATE.Value), Fields!FriendlyName.Value & CSTR(Fields!DATE.Value), Fields!Metric.Value, "MetricDataSet")
如果我误解了这个问题,请告诉我。
我已经查看了几个关于 SSRS tablix 表达式的 post,但找不到我的特定问题的答案。
我正在创建一个仪表板,其中包含各个经理的摘要数据。他们将月度汇总数据输入到一个结构如下的 table 中:
Create TABLE OperationMetrics
AS
Date date
Plant char(10)
Sales float
ReturnedProduct float
数据可以使用一些分组,所以我创建了一个 table 来引用这些指标进入哪个报告组,如下所示:
Create Table OperationsReport
as
ReportType varchar(50)
MetricType varchar(50)
在这个 table 中,'Sales' 和 'ReturnedProduct' 是 Metric 列,而 'ExecSummary' 或 'Quality' 是 ReportType 条目。为了加入,我决定取消操作 OperationMetrics table...
Select Date, Plant, Metric, MetricType
From (Select Date, Plant, Sales, ReturnedProduct From OperationMetrics)
UNPVIOT (Metric for MetricType in (Sales, ReturnedProduct) UnPvt
并将其加入 OperationsReport table,这样我就对指标进行了分组。
Select Date, Plant, Metric, Rpt.MetricReport, MetricType
FROM OpMetrics_Unpivoted OpEx
INNER JOIN OperationsReport Rpt on OpEx.MetricType = Rpt.MetricType
(我明白其中的元素并不理想,但有时我们无法控制自己的命运。)
这不包括整个 table,但您明白了要点。因此,他们有一个表格,他们填写了 OperationMetrics table。我选择了 SSRS 来显示输出。
我使用以下配置创建了一个 tablix(由于我的代表,我无法 post 图片...)
日期是唯一的列组,在 'MMM-yy' 上分组 父行组是 ReportType 子行组是 MetricType
现在,我的问题是一些指标是其他指标的计算结果。例如,经理没有输入 'Returned Product (% of Sales)',因为假设我们可以简单地计算它。它将是 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 会查找第一个匹配项,因此它只是 post 在之后的剩余月份中具有相同的值。
我尝试使用 this 但它让我回到了开始时的状态,因为数据集没有值。
任何对此的帮助都会受到欢迎。我想保留行组层次结构。
听起来 LookUp 对您有用,但您只需要包含日期即可找到正确的月份。 LookUp 将 return 第一场比赛,这就是为什么它只在第一个月工作。
您可以尝试在 LookUp 中连接 Metric Name 和 Date 字段。
Lookup("Sales" & CSTR(Fields!DATE.Value), Fields!FriendlyName.Value & CSTR(Fields!DATE.Value), Fields!Metric.Value, "MetricDataSet")
如果我误解了这个问题,请告诉我。