3

我正在创建一个报告并尝试从多个表中获取一个组合值并且无法弄清楚并且开始怀疑它是否可能?

我有 2 个存储过程返回具有不同时间范围的相同数据。一个存储过程是根据过去 12 个月的金额返回数据。另一个程序是返回 13 个月以上的所有金额的总和。我有一个总和,以获得 1 年收集的总数和 1 年以上的总数。我想把这些总数结合起来得到所有年份的总数。我面临的问题是总数按分类和名称分组。

我有以下示例数据:

Date        Class  Name  Earned Count  Earned Amount  Collected Count  Collected Amount
Sept-11     Red    Jack      5         10.50           2                54.20                  
Sept-11     Red    Bill      2         22.75           4                120.58
Sept-11     Blue   Jill      9         43.23           25               443.32  
Sept-11     Green  Bob       84        45846.33        62               4843.22
Sept-11     Green  Pam       2         13.55           1                23.23
Sept-11     Green  Tammy     32        2332.22         443              33232.33

Aug-11      Red    Jack      1         23.50           2                33.20                  
Aug-11      Red    Bill      2         52.75           4                323.22
Aug-11      Blue   Jill      3         43.23           23               33.32  
Aug-11      Green  Bob       4         46.33           22               653.22
Aug-11      Green  Pam       5         13.55           1                46.23
Aug-11      Green  Tammy     6         1132.22         111              89.33

总计如下所示:

Date      Class  Name  Earned Count  Earned Amount  Collected Count  Collected Amount   
Sub-Total Red    Jack   33           ##.##          ##               ##.##      
                 Bill   ##           ##.##          ##               ##.## 
          Blue   Jill   ##           ##.##          ##               ##.## 
          Green  Bob    ##           ##.##          ##               ##.## 
                 Pam    ##           ##.##          ##               ##.## 
                 Tammy  ##           ##.##          ##               ##.##   

Year+     Red    Jack   4344         ##.##          ##               ##.##      
                 Bill   ##           ##.##          ##               ##.## 
          Blue   Jill   ##           ##.##          ##               ##.## 
          Green  Bob    ##           ##.##          ##               ##.## 
                 Pam    ##           ##.##          ##               ##.## 
                 Tammy  ##           ##.##          ##               ##.##    

因此,我想将每个班级和名称的 Year+ total 与 year total 结合起来。例如,我想找到 Jack's Earned Count 一年和一年+,所以它应该是 33 + 4344,但实际上我想为所有列出的值的每个人都这样做。

在 SSRS 中,我按班级和姓名分组,并且有一年+的总数,我试图从一年中添加总和,但它只得到每个人的总数,而不仅仅是一个人和他们的班级。我对一个字段使用以下表达式:

=Fields!EarnedCount.Value + Sum(Fields!EarnedCount.Value, "MyEmployeeRpt")

有没有办法根据一个值取一个总和,比如只在 Name = Bill 和 Class = Red 时得到 Sum。我面临的另一个问题是我不知道我可能有多少个名字或类。有什么想法吗?谢谢您的帮助!

4

1 回答 1

1

SSRS 2008 R2

首先,如果您使用的是 SSRS 2008 R2,LOOKUP功能非常值得一看:

Lookup(source_expression, destination_expression, result_expression, dataset)

SSRS 2008

如果你是SSRS 2008,有两种解决方案:

重写 SQL 查询

可以从存储过程中提取 SQL,然后加入查询,从而将时间范围扩展到跨越两者并更新报告以过滤到所需的时间范围,这意味着您可以使用整个数据集的总数来获得所需的结果。

由于存储过程的性质,这可能是不可能的。

使用子报告

此解决方案要求您制作一个子报告,您传递类、名称和获得的计数,然后子报告返回组合值。

  1. 使用类、名称和赢得计数的参数创建一个新的子报表
  2. 使用 SQL 添加新的 tablix 以返回 Year+
  3. 更新 SQL 以过滤参数(由于它是存储过程,这可能是不可能的)示例:

    ...
    Where [Class] = @Class and [Name] = @Name
    

    或使用 Tablix 上的过滤器,按类和名称过滤,它们在其中等于相应的参数

  4. 删除 Tablix 的除一个字段外的所有列和行,添加以下表达式返回 Earned Count 的 Sum of Earned Count + 参数传递的值

    =Sum(Fields!EarnedCount.Value)+Parameters!EarnedCount.Value
    
  5. 将报告大小调整为与 tablix 相同的大小
  6. 删除边框格式(否则以双边框结束)
  7. 返回到原始报告,将子报告添加为 tablix 中的字段,您希望在其中查看组合的总传递参数 Class、Name 和 EarnedCount
  8. 给子报表添加边框
于 2012-11-26T11:54:14.347 回答