Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services SSR得到以前的总数_Reporting Services - Fatal编程技术网

Reporting services SSR得到以前的总数

Reporting services SSR得到以前的总数,reporting-services,Reporting Services,我正在研究SSRS 2008。一个简单的tablix,在行和列的交叉处有一个行组(产品)和一个列组(月),即数据(销售数量)。现在我添加一个总计行,它等于每个月的总和(销售额)。我还添加了一个总计列,它等于每个产品的总和(销售数量)。在合计行/列的交点处,该值是所有产品和所有月份的总销售额。现在,我想把它改为所有产品的总数,除了上个月之外的所有月份。例如,有产品1、2、3和第1、2、3个月。我想要该单元格中产品1,2,3和第1,2个月的总销售额。怎么做?类似于这张图片,在右下角,应该有6个(2月

我正在研究SSRS 2008。一个简单的tablix,在行和列的交叉处有一个行组(产品)和一个列组(月),即数据(销售数量)。现在我添加一个总计行,它等于每个月的总和(销售额)。我还添加了一个总计列,它等于每个产品的总和(销售数量)。在合计行/列的交点处,该值是所有产品和所有月份的总销售额。现在,我想把它改为所有产品的总数,除了上个月之外的所有月份。例如,有产品1、2、3和第1、2、3个月。我想要该单元格中产品1,2,3和第1,2个月的总销售额。怎么做?类似于这张图片,在右下角,应该有6个(2月和1月)

----------更新,添加了创建此报告的脚本,因此可能有人可以尝试

数据集:

    select 'Jan'  as mon, 'p1' as prod, 1 as id
    union all
    select 'Feb'  as mon, 'p1' as prod, 1
    union all
    select 'Mar'  as mon, 'p1' as prod, 1

    union all
    select 'Jan'  as mon, 'p2' as prod, 1
    union all
    select 'Feb'  as mon, 'p2' as prod, 1
    union all
    select 'Mar'  as mon, 'p2' as prod, 1

    union all
    select 'Jan'  as mon, 'p3' as prod, 1
    union all
    select 'Feb'  as mon, 'p3' as prod, 1
    union all
    select 'Mar'  as mon, 'p3' as prod, 1
报告定义:

有一个行组(prod上的组),一个列组(mon上的组)。
实际上,我可以在T-SQL中通过计算总计来实现这一点,而不需要上个月,然后将其连接回主数据集。但我想知道的是,单靠SSR是可以实现的。

在表达式中使用IIF,从数据集中排除最后(最大)个月的IIF

=SUM(IIF(Month(Fields!DateField.Value) & "|" & YEAR(Fields!DateField.Value) = 
Month(MAX(Fields!DateField.Value, "Yourdataset")) & "|" & YEAR(MAX(Fields!DateField.Value, "Yourdataset")), 0, Fields!ValueField.Value))

如果月份等于最大月份,则它将为0,否则它将使用您的值字段

引用要按名称求和的文本框,作为reportItems集合的成员

例如,在您的示例中,如果tablix的底行(总计行)的月份列有名为“tbTotal1”、“tbTotal2”、“tbTotal3”的文本框,那么您可以在最后一个文本框中设置这样的表达式,只对前两个月的总计进行求和:

=ReportItems!tbTotal1.Value + ReportItems!tbTotal2.Value
试试这个:

RunningValue(Fields!totalField.Value,Sum,"DataSourceName")

您可以修改聚合器(例如使用Count而不是Sum),如果您想在每次迭代中重置值,可以使用单词Nothing

来更改数据源名称,将适当的reportItem值添加到一起。我想不出具体的方法。你能提供更多细节吗?“7:避免在SSRS报告级别创建计算字段如果报告中有计算字段,则最好在查询级别而不是在报告级别创建,因为数据库可以更好地处理计算。这种方法还将减少报表服务器上的报表处理负载,并简化维护。“尝试了,但得到了此结果文本框xx的值表达式具有指定数据集范围的嵌套聚合。内部聚合无法指定数据集范围。我认为这意味着max函数不能将数据集作为作用域。这是我根据您的使用的表达式:=Sum(iif(Fields!mon.Value=max(Fields!mon.Value,“DataSet1”)、0,Fields!ID.Value)。错误意味着不允许将指定数据集的max放入Sum中。作为一种解决方法,向数据集中添加一个计算字段,其表达式为
=IIF(Fields!mon.Value=MAX(Fields!mon.Value,“DataSet1”),0,Fields!ID.Value))
然后在列中对该字段求和。此外,您的ID列(Fields!ID.Value)有当月的销售额?是的,ID是销售额。这是一个测试,所以我没有花时间在命名上。我还尝试了计算字段方法,但得到了另一个错误:用于计算字段的表达式..包括聚合、行数、runningvalue、previous或lookup函数。聚合、rownumber、runningvalue、previous和lookup函数不能在计算字段表达式中使用。该表不是静态表,它有一个列组,因此列数(月)未知。因此无法使用ReportItems。我上传了报告定义,希望有意义。