我是SSRS(2012)的新手,来自使用BusinessObjects的loooong背景,因此有时我很难知道如何搜索正确的术语。
我有一个这样的报告,其中的部分在tablix上,而Grand Total在另一个中。 这种布局是必需的(或者这会更简单!)
Section 1
Date 1 Date 2 Date 3 % of Grand Total
Product1 value value Value Value3/GT3 (12%)
Product2 value value Value Value3/GT3 (14%)
Section Total Total1 Total Total3 Value3/GT3 (7%)
Section 2
Date 1 Date 2 Date 3
Product1 value value Value Value3/GT3 (30%)
Product2 value value Value Value3/GT3 (22%)
Section Total Total1 Total 2 Total3 Value3/GT3 (22%)
Grand Total GT1 GT2 GT3 GT3/GT3 (100%)
我很难计算总计的百分比,因为分子和分母不在同一范围内。 我想可能是一个Report Variable,但我无法弄清楚如何从BusinessObjects创建这种公式的等价物 -
=Sum(Value) where (Date = "Date 3")
我想为报告变量分配上下文或范围,但我不知道该怎么做,或者它是否会起作用。
我知道我可以通过在引号中包含数据集名称来创建整个报表的范围,但是如何限制其中的一部分?
谢谢, 点头。
答案 0 :(得分:2)
SSRS中的聚合函数将范围作为第二个参数。该scope参数是一个字符串,它是" name"无论你的范围是什么。如果希望范围是表组,则可以使用表组的名称。如果您希望范围是整个数据集,那么您将使用数据集的名称。您始终可以在属性窗口中看到元素的名称(按F4键)。
根据您完成过滤的方式,您可以使用不同的范围。使用数据集名称将是最直接的,但是假设数据集已经过滤到SQL中的正确记录。否则,您可能希望使用Tablix作为范围。 (类似于" Tablix1和#34;而不是" DataSetName"在下面的示例中。)
一旦您知道您正在使用哪个范围,您就可以在聚合中使用条件来仅查看正确的记录。例如。要在SSRS中重写Business Objects表达式:
=SUM(IIF(Date = "Date 3",Value,0), "DataSetName")
此表达式有效,因为如果日期字段不等于"日期3"它将返回零并且不向SUM添加任何内容。只有Date = "Date 3"
Value
函数中包含SUM()
行的行。
关于SSRS范围和聚合函数的一些好资源:
答案 1 :(得分:1)
=Sum(IIf(Fields!ROWTYPE.Value = 9, Fields!TAXES.Value, 0), "DataSet1")
这是一个我失去了永恒的愚蠢细节:TAXES
字段是十进制,0是...整数!用CDec(0)!
代替后者
侨
(*)真正的错误仅在ssrs系统日志中。像(自由翻译对不起):"The expression for the variable myVAR uses an aggregation function on different data type"