首页 > 解决方案 > 需要为损益表添加/减去组总计

问题描述

我在 SSRS 中设计了损益表。它有两个行组,科目类型和科目表中的科目构成明细。我遇到的问题是我需要添加和减去一些组总数。

例如,有一组帐户名称为 Sales,下一组是 Returns and Allowances,下一组是 COGS。我需要插入一个汇总 Sales 和 Returns 和 Allowances 组的行。然后我需要在 COGS 组之后插入一行,从 Sales 和 Returns 和 Allowances 总计中减去 COGS。

例如:

Sales
  Acct 1
  Acct 2
Sales Total

Returns and Allowances
  Acct 3
  Acct 4
Returns and Allowances Total

Net Sales = Sales Total + Returns and Allowances Total

COGS
  Acct 5
  Acct 6
COGS Total

Gross Revenue = Net Sales - COGS  (or Sales Total + Returns and Allowances Total - COGS Total)

标签: reporting-servicesssrs-2008-r2

解决方案


如果不了解您的数据是什么样子,很难给出准确的答案,但我会通过向您的数据集中添加一个额外的组来让生活更轻松。您可以在数据集查询中轻松做到这一点。

我创建了一些带有额外外部分组列的示例数据。为了简单起见,我还添加了一个排序列,但您可以按照最适合您的方式对其进行排序。

这是示例数据脚本。

DECLARE @t TABLE(OuterGroup varchar(20), AmountType varchar(20), Account varchar(20), Amount decimal(10,4), SortOrder int)

INSERT INTO @t VALUES 
('Net Sales', 'Sales', 'Account 1', 10.1, 1),
('Net Sales', 'Sales', 'Account 2', 15.5, 2),
('Net Sales', 'Returns & Allowances', 'Account 3', 2.6, 3),
('Net Sales', 'Returns & Allowances', 'Account 4', 3.7, 4),
('COGS', 'COGS', 'Account 5', 1.1, 5),
('COGS', 'COGS', 'Account 6', 1.2, 6)

SELECT * FROM @t

我直接在数据集查询中使用了它。如您所见,“外部集团”将允许我们在报告中对此进行分组。

报告设计是一个简单的表格,将总计添加到三组中的每一组。这些组位于 OuterGroup、AmountType 和默认详细信息组上。我给每一个加了一个总数。

这是设计

在此处输入图像描述

除了在总字幕表达式中添加一些测试之外,我唯一编辑的是最终的 Gross Rev. 表达式

表达式是

=Sum(Fields!Amount.Value * IIF(Fields!AmountType.Value="COGS", -1, 1))

我们实际上在这里所做的只是将所有金额相加,但首先将 COGS 金额乘以-1使其为负数。

这给出了以下结果

在此处输入图像描述

如果您移动了总转速,则可以删除第一列(但不是组!)。显然是下一栏的标题...


推荐阅读