我正在创建一个报告并试图获得一个Sum来组合来自多个表的值,并且无法弄明白并开始怀疑它是否可能?
我有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 ## ##.## ## ##.##
因此,我希望将每个班级和名称的年份+总数与年份总和相结合。例如,我想找一年一年的Jack's Earned Count +所以它会是33 + 4344,除了在现实中我想为所有人列出的所有值都这样做。
在SSRS中,我按类和名称进行分组,并且总计为年+,我试图从年份中添加总和,但它只获得每个人的总数,而不仅仅是一个人和他们的班级。我在一个字段中使用以下表达式:
=Fields!EarnedCount.Value + Sum(Fields!EarnedCount.Value, "MyEmployeeRpt")
有没有办法根据一个值得到一笔金额,比如只有当Name = Bill和Class = Red时得到Sum。我面临的另一个问题是我不知道我可能有多少名字或类别。有什么想法吗?谢谢你的帮助!
答案 0 :(得分:1)
首先,如果您使用的是SSRS 2008 R2,LOOKUP功能非常值得一看:
Lookup(source_expression, destination_expression, result_expression, dataset)
如果您是SSRS 2008,则有两种解决方案:
重写SQL查询
可以从存储过程中提取SQL,然后加入查询,扩展时间范围以跨越两者并更新报告以过滤到所需的时间范围,这意味着您可以使用整个数据集的总和来实现要求的结果。
由于存储过程的性质,这可能无法实现。
使用子报告
此解决方案要求您创建一个子报表,您将其传递给Class,Name和Earned Count,然后子报表将返回合并后的值。
更新SQL以过滤参数(由于它是存储过程,这可能无法实现)示例:
...
Where [Class] = @Class and [Name] = @Name
或者使用Tablix上的过滤器,按类别和名称进行过滤,它们与相应的参数相等
除了一个字段外,删除Tablix的所有列和行,添加以下表达式以返回参数传递的已获计数总和+值
=Sum(Fields!EarnedCount.Value)+Parameters!EarnedCount.Value